Date: Sat, 9 Mar 2013 02:13:25 +0000 (UTC) From: Attilio Rao <attilio@FreeBSD.org> To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r248083 - in user/attilio/vmobj-rwlock/sys: cddl/compat/opensolaris/sys vm Message-ID: <201303090213.r292DPli061332@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: attilio Date: Sat Mar 9 02:13:24 2013 New Revision: 248083 URL: http://svnweb.freebsd.org/changeset/base/248083 Log: MFC Modified: user/attilio/vmobj-rwlock/sys/cddl/compat/opensolaris/sys/vnode.h user/attilio/vmobj-rwlock/sys/vm/vm_object.c user/attilio/vmobj-rwlock/sys/vm/vm_object.h user/attilio/vmobj-rwlock/sys/vm/vm_page.c Directory Properties: user/attilio/vmobj-rwlock/ (props changed) user/attilio/vmobj-rwlock/sys/ (props changed) Modified: user/attilio/vmobj-rwlock/sys/cddl/compat/opensolaris/sys/vnode.h ============================================================================== --- user/attilio/vmobj-rwlock/sys/cddl/compat/opensolaris/sys/vnode.h Sat Mar 9 02:05:29 2013 (r248082) +++ user/attilio/vmobj-rwlock/sys/cddl/compat/opensolaris/sys/vnode.h Sat Mar 9 02:13:24 2013 (r248083) @@ -76,7 +76,7 @@ vn_is_readonly(vnode_t *vp) #define vn_has_cached_data(vp) \ ((vp)->v_object != NULL && \ ((vp)->v_object->resident_page_count > 0 || \ - (vp)->v_object->cache != NULL)) + !vm_object_cache_is_empty((vp)->v_object))) #define vn_exists(vp) do { } while (0) #define vn_invalid(vp) do { } while (0) #define vn_renamepath(tdvp, svp, tnm, lentnm) do { } while (0) Modified: user/attilio/vmobj-rwlock/sys/vm/vm_object.c ============================================================================== --- user/attilio/vmobj-rwlock/sys/vm/vm_object.c Sat Mar 9 02:05:29 2013 (r248082) +++ user/attilio/vmobj-rwlock/sys/vm/vm_object.c Sat Mar 9 02:13:24 2013 (r248083) @@ -174,7 +174,7 @@ vm_object_zdtor(void *mem, int size, voi ("object %p has reservations", object)); #endif - KASSERT(object->cache == NULL, + KASSERT(vm_object_cache_is_empty(object), ("object %p has cached pages", object)); KASSERT(object->paging_in_progress == 0, @@ -753,7 +753,7 @@ vm_object_terminate(vm_object_t object) if (__predict_false(!LIST_EMPTY(&object->rvq))) vm_reserv_break_all(object); #endif - if (__predict_false(object->cache != NULL)) + if (__predict_false(!vm_object_cache_is_empty(object))) vm_page_cache_free(object, 0, 0); /* @@ -1378,7 +1378,7 @@ retry: * should still be OBJT_DEFAULT and orig_object should not * contain any cached pages within the specified range. */ - if (__predict_false(orig_object->cache != NULL)) + if (__predict_false(!vm_object_cache_is_empty(orig_object))) vm_page_cache_transfer(orig_object, offidxstart, new_object); } @@ -1727,7 +1727,8 @@ vm_object_collapse(vm_object_t object) /* * Free any cached pages from backing_object. */ - if (__predict_false(backing_object->cache != NULL)) + if (__predict_false( + !vm_object_cache_is_empty(backing_object))) vm_page_cache_free(backing_object, 0, 0); } /* @@ -1921,7 +1922,7 @@ again: } vm_object_pip_wakeup(object); skipmemq: - if (__predict_false(object->cache != NULL)) + if (__predict_false(!vm_object_cache_is_empty(object))) vm_page_cache_free(object, start, end); } Modified: user/attilio/vmobj-rwlock/sys/vm/vm_object.h ============================================================================== --- user/attilio/vmobj-rwlock/sys/vm/vm_object.h Sat Mar 9 02:05:29 2013 (r248082) +++ user/attilio/vmobj-rwlock/sys/vm/vm_object.h Sat Mar 9 02:13:24 2013 (r248083) @@ -242,6 +242,13 @@ void vm_object_pip_wakeup(vm_object_t ob void vm_object_pip_wakeupn(vm_object_t object, short i); void vm_object_pip_wait(vm_object_t object, char *waitid); +static __inline boolean_t +vm_object_cache_is_empty(vm_object_t object) +{ + + return (object->cache == NULL); +} + vm_object_t vm_object_allocate (objtype_t, vm_pindex_t); boolean_t vm_object_coalesce(vm_object_t, vm_ooffset_t, vm_size_t, vm_size_t, boolean_t); Modified: user/attilio/vmobj-rwlock/sys/vm/vm_page.c ============================================================================== --- user/attilio/vmobj-rwlock/sys/vm/vm_page.c Sat Mar 9 02:05:29 2013 (r248082) +++ user/attilio/vmobj-rwlock/sys/vm/vm_page.c Sat Mar 9 02:13:24 2013 (r248083) @@ -1130,7 +1130,7 @@ vm_page_cache_free(vm_object_t object, v boolean_t empty; mtx_lock(&vm_page_queue_free_mtx); - if (__predict_false(object->cache == NULL)) { + if (__predict_false(vm_object_cache_is_empty(object))) { mtx_unlock(&vm_page_queue_free_mtx); return; } @@ -1174,7 +1174,7 @@ vm_page_cache_free(vm_object_t object, v cnt.v_cache_count--; cnt.v_free_count++; } - empty = object->cache == NULL; + empty = vm_object_cache_is_empty(object); mtx_unlock(&vm_page_queue_free_mtx); if (object->type == OBJT_VNODE && empty) vdrop(object->handle); @@ -1258,7 +1258,7 @@ vm_page_cache_transfer(vm_object_t orig_ * not. */ VM_OBJECT_ASSERT_WLOCKED(new_object); - KASSERT(new_object->cache == NULL, + KASSERT(vm_object_cache_is_empty(new_object), ("vm_page_cache_transfer: object %p has cached pages", new_object)); mtx_lock(&vm_page_queue_free_mtx); @@ -1301,7 +1301,7 @@ vm_page_cache_transfer(vm_object_t orig_ m_next->left = m; new_object->cache = m_next; } - KASSERT(new_object->cache == NULL || + KASSERT(vm_object_cache_is_empty(new_object) || new_object->type == OBJT_SWAP, ("vm_page_cache_transfer: object %p's type is incompatible" " with cached pages", new_object)); @@ -1328,7 +1328,7 @@ vm_page_is_cached(vm_object_t object, vm * exist. */ VM_OBJECT_ASSERT_WLOCKED(object); - if (__predict_true(object->cache == NULL)) + if (__predict_true(vm_object_cache_is_empty(object))) return (FALSE); mtx_lock(&vm_page_queue_free_mtx); m = vm_page_cache_lookup(object, pindex); @@ -1466,7 +1466,8 @@ vm_page_alloc(vm_object_t object, vm_pin m->valid = 0; m_object = m->object; vm_page_cache_remove(m); - if (m_object->type == OBJT_VNODE && m_object->cache == NULL) + if (m_object->type == OBJT_VNODE && + vm_object_cache_is_empty(m_object)) vp = m_object->handle; } else { KASSERT(VM_PAGE_IS_FREE(m), @@ -1723,7 +1724,8 @@ vm_page_alloc_init(vm_page_t m) m->valid = 0; m_object = m->object; vm_page_cache_remove(m); - if (m_object->type == OBJT_VNODE && m_object->cache == NULL) + if (m_object->type == OBJT_VNODE && + vm_object_cache_is_empty(m_object)) drop = m_object->handle; } else { KASSERT(VM_PAGE_IS_FREE(m),
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201303090213.r292DPli061332>