svn commit: r247021 - in user/attilio/vmobj-rwlock/sys: amd64/amd64 arm/arm dev/agp dev/drm dev/drm2 dev/drm2/i915 dev/hwpmc dev/md dev/netmap dev/sound/pcm fs/fuse fs/nfsclient fs/procfs fs/tmpfs ...

Attilio Rao attilio at FreeBSD.org
Wed Feb 20 10:38:46 UTC 2013


Author: attilio
Date: Wed Feb 20 10:38:34 2013
New Revision: 247021
URL: http://svnweb.freebsd.org/changeset/base/247021

Log:
  Switch vm_object lock to be a rwlock.
  * VM_OBJECT_LOCK and VM_OBJECT_UNLOCK are mapped to write operations
  * VM_OBJECT_SLEEP() is introduced as a general purpose primitve to
    get a sleep operation using a VM_OBJECT_LOCK() as protection
  * The approach must bear with vm_pager.h namespace pollution so many
    files require including directly rwlock.h

Modified:
  user/attilio/vmobj-rwlock/sys/amd64/amd64/machdep.c
  user/attilio/vmobj-rwlock/sys/amd64/amd64/pmap.c
  user/attilio/vmobj-rwlock/sys/arm/arm/pmap-v6.c
  user/attilio/vmobj-rwlock/sys/arm/arm/pmap.c
  user/attilio/vmobj-rwlock/sys/dev/agp/agp.c
  user/attilio/vmobj-rwlock/sys/dev/agp/agp_i810.c
  user/attilio/vmobj-rwlock/sys/dev/drm/drmP.h
  user/attilio/vmobj-rwlock/sys/dev/drm2/drmP.h
  user/attilio/vmobj-rwlock/sys/dev/drm2/i915/i915_gem.c
  user/attilio/vmobj-rwlock/sys/dev/hwpmc/hwpmc_mod.c
  user/attilio/vmobj-rwlock/sys/dev/md/md.c
  user/attilio/vmobj-rwlock/sys/dev/netmap/netmap.c
  user/attilio/vmobj-rwlock/sys/dev/sound/pcm/dsp.c
  user/attilio/vmobj-rwlock/sys/fs/fuse/fuse_io.c
  user/attilio/vmobj-rwlock/sys/fs/fuse/fuse_vnops.c
  user/attilio/vmobj-rwlock/sys/fs/nfsclient/nfs_clbio.c
  user/attilio/vmobj-rwlock/sys/fs/procfs/procfs_map.c
  user/attilio/vmobj-rwlock/sys/fs/tmpfs/tmpfs_subr.c
  user/attilio/vmobj-rwlock/sys/fs/tmpfs/tmpfs_vnops.c
  user/attilio/vmobj-rwlock/sys/i386/i386/machdep.c
  user/attilio/vmobj-rwlock/sys/i386/i386/pmap.c
  user/attilio/vmobj-rwlock/sys/i386/xen/pmap.c
  user/attilio/vmobj-rwlock/sys/ia64/ia64/pmap.c
  user/attilio/vmobj-rwlock/sys/kern/imgact_elf.c
  user/attilio/vmobj-rwlock/sys/kern/kern_exec.c
  user/attilio/vmobj-rwlock/sys/kern/kern_proc.c
  user/attilio/vmobj-rwlock/sys/kern/kern_sharedpage.c
  user/attilio/vmobj-rwlock/sys/kern/kern_shutdown.c
  user/attilio/vmobj-rwlock/sys/kern/subr_uio.c
  user/attilio/vmobj-rwlock/sys/kern/sys_process.c
  user/attilio/vmobj-rwlock/sys/kern/sysv_shm.c
  user/attilio/vmobj-rwlock/sys/kern/uipc_shm.c
  user/attilio/vmobj-rwlock/sys/kern/uipc_syscalls.c
  user/attilio/vmobj-rwlock/sys/kern/vfs_aio.c
  user/attilio/vmobj-rwlock/sys/kern/vfs_bio.c
  user/attilio/vmobj-rwlock/sys/kern/vfs_cluster.c
  user/attilio/vmobj-rwlock/sys/kern/vfs_default.c
  user/attilio/vmobj-rwlock/sys/kern/vfs_subr.c
  user/attilio/vmobj-rwlock/sys/kern/vfs_syscalls.c
  user/attilio/vmobj-rwlock/sys/kern/vfs_vnops.c
  user/attilio/vmobj-rwlock/sys/mips/mips/pmap.c
  user/attilio/vmobj-rwlock/sys/nfsclient/nfs_bio.c
  user/attilio/vmobj-rwlock/sys/nfsserver/nfs_serv.c
  user/attilio/vmobj-rwlock/sys/ofed/include/linux/linux_compat.c
  user/attilio/vmobj-rwlock/sys/powerpc/aim/mmu_oea.c
  user/attilio/vmobj-rwlock/sys/powerpc/aim/mmu_oea64.c
  user/attilio/vmobj-rwlock/sys/powerpc/booke/pmap.c
  user/attilio/vmobj-rwlock/sys/security/mac/mac_process.c
  user/attilio/vmobj-rwlock/sys/sparc64/sparc64/pmap.c
  user/attilio/vmobj-rwlock/sys/ufs/ffs/ffs_rawread.c
  user/attilio/vmobj-rwlock/sys/ufs/ffs/ffs_vnops.c
  user/attilio/vmobj-rwlock/sys/vm/default_pager.c
  user/attilio/vmobj-rwlock/sys/vm/device_pager.c
  user/attilio/vmobj-rwlock/sys/vm/phys_pager.c
  user/attilio/vmobj-rwlock/sys/vm/sg_pager.c
  user/attilio/vmobj-rwlock/sys/vm/swap_pager.c
  user/attilio/vmobj-rwlock/sys/vm/uma_core.c
  user/attilio/vmobj-rwlock/sys/vm/vm_fault.c
  user/attilio/vmobj-rwlock/sys/vm/vm_glue.c
  user/attilio/vmobj-rwlock/sys/vm/vm_init.c
  user/attilio/vmobj-rwlock/sys/vm/vm_kern.c
  user/attilio/vmobj-rwlock/sys/vm/vm_map.c
  user/attilio/vmobj-rwlock/sys/vm/vm_meter.c
  user/attilio/vmobj-rwlock/sys/vm/vm_mmap.c
  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
  user/attilio/vmobj-rwlock/sys/vm/vm_pageout.c
  user/attilio/vmobj-rwlock/sys/vm/vm_pager.c
  user/attilio/vmobj-rwlock/sys/vm/vm_pager.h
  user/attilio/vmobj-rwlock/sys/vm/vm_reserv.c
  user/attilio/vmobj-rwlock/sys/vm/vnode_pager.c

Modified: user/attilio/vmobj-rwlock/sys/amd64/amd64/machdep.c
==============================================================================
--- user/attilio/vmobj-rwlock/sys/amd64/amd64/machdep.c	Wed Feb 20 06:48:39 2013	(r247020)
+++ user/attilio/vmobj-rwlock/sys/amd64/amd64/machdep.c	Wed Feb 20 10:38:34 2013	(r247021)
@@ -80,6 +80,7 @@ __FBSDID("$FreeBSD$");
 #include <sys/pcpu.h>
 #include <sys/ptrace.h>
 #include <sys/reboot.h>
+#include <sys/rwlock.h>
 #include <sys/sched.h>
 #include <sys/signalvar.h>
 #ifdef SMP

Modified: user/attilio/vmobj-rwlock/sys/amd64/amd64/pmap.c
==============================================================================
--- user/attilio/vmobj-rwlock/sys/amd64/amd64/pmap.c	Wed Feb 20 06:48:39 2013	(r247020)
+++ user/attilio/vmobj-rwlock/sys/amd64/amd64/pmap.c	Wed Feb 20 10:38:34 2013	(r247021)
@@ -3761,7 +3761,7 @@ pmap_enter_object(pmap_t pmap, vm_offset
 	vm_page_t m, mpte;
 	vm_pindex_t diff, psize;
 
-	VM_OBJECT_LOCK_ASSERT(m_start->object, MA_OWNED);
+	VM_OBJECT_LOCK_ASSERT(m_start->object, RA_WLOCKED);
 	psize = atop(end - start);
 	mpte = NULL;
 	m = m_start;
@@ -3943,7 +3943,7 @@ pmap_object_init_pt(pmap_t pmap, vm_offs
 	vm_page_t p, pdpg;
 	int pat_mode;
 
-	VM_OBJECT_LOCK_ASSERT(object, MA_OWNED);
+	VM_OBJECT_LOCK_ASSERT(object, RA_WLOCKED);
 	KASSERT(object->type == OBJT_DEVICE || object->type == OBJT_SG,
 	    ("pmap_object_init_pt: non-device object"));
 	if ((addr & (NBPDR - 1)) == 0 && (size & (NBPDR - 1)) == 0) {
@@ -4557,7 +4557,7 @@ pmap_is_modified(vm_page_t m)
 	 * concurrently set while the object is locked.  Thus, if PGA_WRITEABLE
 	 * is clear, no PTEs can have PG_M set.
 	 */
-	VM_OBJECT_LOCK_ASSERT(m->object, MA_OWNED);
+	VM_OBJECT_LOCK_ASSERT(m->object, RA_WLOCKED);
 	if ((m->oflags & VPO_BUSY) == 0 &&
 	    (m->aflags & PGA_WRITEABLE) == 0)
 		return (FALSE);
@@ -4688,7 +4688,7 @@ pmap_remove_write(vm_page_t m)
 	 * another thread while the object is locked.  Thus, if PGA_WRITEABLE
 	 * is clear, no page table entries need updating.
 	 */
-	VM_OBJECT_LOCK_ASSERT(m->object, MA_OWNED);
+	VM_OBJECT_LOCK_ASSERT(m->object, RA_WLOCKED);
 	if ((m->oflags & VPO_BUSY) == 0 &&
 	    (m->aflags & PGA_WRITEABLE) == 0)
 		return;
@@ -4832,7 +4832,7 @@ pmap_clear_modify(vm_page_t m)
 
 	KASSERT((m->oflags & VPO_UNMANAGED) == 0,
 	    ("pmap_clear_modify: page %p is not managed", m));
-	VM_OBJECT_LOCK_ASSERT(m->object, MA_OWNED);
+	VM_OBJECT_LOCK_ASSERT(m->object, RA_WLOCKED);
 	KASSERT((m->oflags & VPO_BUSY) == 0,
 	    ("pmap_clear_modify: page %p is busy", m));
 

Modified: user/attilio/vmobj-rwlock/sys/arm/arm/pmap-v6.c
==============================================================================
--- user/attilio/vmobj-rwlock/sys/arm/arm/pmap-v6.c	Wed Feb 20 06:48:39 2013	(r247020)
+++ user/attilio/vmobj-rwlock/sys/arm/arm/pmap-v6.c	Wed Feb 20 10:38:34 2013	(r247021)
@@ -2212,7 +2212,7 @@ pmap_object_init_pt(pmap_t pmap, vm_offs
     vm_pindex_t pindex, vm_size_t size)
 {
 
-	VM_OBJECT_LOCK_ASSERT(object, MA_OWNED);
+	VM_OBJECT_LOCK_ASSERT(object, RA_WLOCKED);
 	KASSERT(object->type == OBJT_DEVICE || object->type == OBJT_SG,
 	    ("pmap_object_init_pt: non-device object"));
 }
@@ -3428,7 +3428,7 @@ pmap_clear_modify(vm_page_t m)
 
 	KASSERT((m->oflags & VPO_UNMANAGED) == 0,
 	    ("pmap_clear_modify: page %p is not managed", m));
-	VM_OBJECT_LOCK_ASSERT(m->object, MA_OWNED);
+	VM_OBJECT_LOCK_ASSERT(m->object, RA_WLOCKED);
 	KASSERT((m->oflags & VPO_BUSY) == 0,
 	    ("pmap_clear_modify: page %p is busy", m));
 
@@ -3475,7 +3475,7 @@ pmap_remove_write(vm_page_t m)
 	 * another thread while the object is locked.  Thus, if PGA_WRITEABLE
 	 * is clear, no page table entries need updating.
 	 */
-	VM_OBJECT_LOCK_ASSERT(m->object, MA_OWNED);
+	VM_OBJECT_LOCK_ASSERT(m->object, RA_WLOCKED);
 	if ((m->oflags & VPO_BUSY) != 0 ||
 	    (m->aflags & PGA_WRITEABLE) != 0)
 		pmap_clearbit(m, PVF_WRITE);

Modified: user/attilio/vmobj-rwlock/sys/arm/arm/pmap.c
==============================================================================
--- user/attilio/vmobj-rwlock/sys/arm/arm/pmap.c	Wed Feb 20 06:48:39 2013	(r247020)
+++ user/attilio/vmobj-rwlock/sys/arm/arm/pmap.c	Wed Feb 20 10:38:34 2013	(r247021)
@@ -3006,7 +3006,7 @@ pmap_object_init_pt(pmap_t pmap, vm_offs
     vm_pindex_t pindex, vm_size_t size)
 {
 
-	VM_OBJECT_LOCK_ASSERT(object, MA_OWNED);
+	VM_OBJECT_LOCK_ASSERT(object, RA_WLOCKED);
 	KASSERT(object->type == OBJT_DEVICE || object->type == OBJT_SG,
 	    ("pmap_object_init_pt: non-device object"));
 }
@@ -4461,7 +4461,7 @@ pmap_clear_modify(vm_page_t m)
 
 	KASSERT((m->oflags & VPO_UNMANAGED) == 0,
 	    ("pmap_clear_modify: page %p is not managed", m));
-	VM_OBJECT_LOCK_ASSERT(m->object, MA_OWNED);
+	VM_OBJECT_LOCK_ASSERT(m->object, RA_WLOCKED);
 	KASSERT((m->oflags & VPO_BUSY) == 0,
 	    ("pmap_clear_modify: page %p is busy", m));
 
@@ -4523,7 +4523,7 @@ pmap_remove_write(vm_page_t m)
 	 * another thread while the object is locked.  Thus, if PGA_WRITEABLE
 	 * is clear, no page table entries need updating.
 	 */
-	VM_OBJECT_LOCK_ASSERT(m->object, MA_OWNED);
+	VM_OBJECT_LOCK_ASSERT(m->object, RA_WLOCKED);
 	if ((m->oflags & VPO_BUSY) != 0 ||
 	    (m->aflags & PGA_WRITEABLE) != 0)
 		pmap_clearbit(m, PVF_WRITE);

Modified: user/attilio/vmobj-rwlock/sys/dev/agp/agp.c
==============================================================================
--- user/attilio/vmobj-rwlock/sys/dev/agp/agp.c	Wed Feb 20 06:48:39 2013	(r247020)
+++ user/attilio/vmobj-rwlock/sys/dev/agp/agp.c	Wed Feb 20 10:38:34 2013	(r247021)
@@ -41,6 +41,7 @@ __FBSDID("$FreeBSD$");
 #include <sys/lock.h>
 #include <sys/mutex.h>
 #include <sys/proc.h>
+#include <sys/rwlock.h>
 
 #include <dev/agp/agppriv.h>
 #include <dev/agp/agpvar.h>
@@ -622,7 +623,7 @@ agp_generic_bind_memory(device_t dev, st
 	return 0;
 bad:
 	mtx_unlock(&sc->as_lock);
-	VM_OBJECT_LOCK_ASSERT(mem->am_obj, MA_OWNED);
+	VM_OBJECT_LOCK_ASSERT(mem->am_obj, RA_WLOCKED);
 	for (k = 0; k < mem->am_size; k += PAGE_SIZE) {
 		m = vm_page_lookup(mem->am_obj, OFF_TO_IDX(k));
 		if (k >= i)

Modified: user/attilio/vmobj-rwlock/sys/dev/agp/agp_i810.c
==============================================================================
--- user/attilio/vmobj-rwlock/sys/dev/agp/agp_i810.c	Wed Feb 20 06:48:39 2013	(r247020)
+++ user/attilio/vmobj-rwlock/sys/dev/agp/agp_i810.c	Wed Feb 20 10:38:34 2013	(r247021)
@@ -56,6 +56,7 @@ __FBSDID("$FreeBSD$");
 #include <sys/lock.h>
 #include <sys/mutex.h>
 #include <sys/proc.h>
+#include <sys/rwlock.h>
 
 #include <dev/agp/agppriv.h>
 #include <dev/agp/agpreg.h>

Modified: user/attilio/vmobj-rwlock/sys/dev/drm/drmP.h
==============================================================================
--- user/attilio/vmobj-rwlock/sys/dev/drm/drmP.h	Wed Feb 20 06:48:39 2013	(r247020)
+++ user/attilio/vmobj-rwlock/sys/dev/drm/drmP.h	Wed Feb 20 10:38:34 2013	(r247021)
@@ -59,6 +59,7 @@ struct drm_file;
 #include <sys/fcntl.h>
 #include <sys/uio.h>
 #include <sys/filio.h>
+#include <sys/rwlock.h>
 #include <sys/sysctl.h>
 #include <sys/bus.h>
 #include <sys/queue.h>

Modified: user/attilio/vmobj-rwlock/sys/dev/drm2/drmP.h
==============================================================================
--- user/attilio/vmobj-rwlock/sys/dev/drm2/drmP.h	Wed Feb 20 06:48:39 2013	(r247020)
+++ user/attilio/vmobj-rwlock/sys/dev/drm2/drmP.h	Wed Feb 20 10:38:34 2013	(r247021)
@@ -58,6 +58,7 @@ struct drm_file;
 #include <sys/fcntl.h>
 #include <sys/uio.h>
 #include <sys/filio.h>
+#include <sys/rwlock.h>
 #include <sys/selinfo.h>
 #include <sys/sysctl.h>
 #include <sys/bus.h>

Modified: user/attilio/vmobj-rwlock/sys/dev/drm2/i915/i915_gem.c
==============================================================================
--- user/attilio/vmobj-rwlock/sys/dev/drm2/i915/i915_gem.c	Wed Feb 20 06:48:39 2013	(r247020)
+++ user/attilio/vmobj-rwlock/sys/dev/drm2/i915/i915_gem.c	Wed Feb 20 10:38:34 2013	(r247021)
@@ -2488,7 +2488,7 @@ i915_gem_wire_page(vm_object_t object, v
 	vm_page_t m;
 	int rv;
 
-	VM_OBJECT_LOCK_ASSERT(object, MA_OWNED);
+	VM_OBJECT_LOCK_ASSERT(object, RA_WLOCKED);
 	m = vm_page_grab(object, pindex, VM_ALLOC_NORMAL | VM_ALLOC_RETRY);
 	if (m->valid != VM_PAGE_BITS_ALL) {
 		if (vm_pager_has_page(object, pindex, NULL, NULL)) {

Modified: user/attilio/vmobj-rwlock/sys/dev/hwpmc/hwpmc_mod.c
==============================================================================
--- user/attilio/vmobj-rwlock/sys/dev/hwpmc/hwpmc_mod.c	Wed Feb 20 06:48:39 2013	(r247020)
+++ user/attilio/vmobj-rwlock/sys/dev/hwpmc/hwpmc_mod.c	Wed Feb 20 10:38:34 2013	(r247021)
@@ -50,6 +50,7 @@ __FBSDID("$FreeBSD$");
 #include <sys/proc.h>
 #include <sys/queue.h>
 #include <sys/resourcevar.h>
+#include <sys/rwlock.h>
 #include <sys/sched.h>
 #include <sys/signalvar.h>
 #include <sys/smp.h>

Modified: user/attilio/vmobj-rwlock/sys/dev/md/md.c
==============================================================================
--- user/attilio/vmobj-rwlock/sys/dev/md/md.c	Wed Feb 20 06:48:39 2013	(r247020)
+++ user/attilio/vmobj-rwlock/sys/dev/md/md.c	Wed Feb 20 10:38:34 2013	(r247021)
@@ -75,6 +75,7 @@
 #include <sys/namei.h>
 #include <sys/proc.h>
 #include <sys/queue.h>
+#include <sys/rwlock.h>
 #include <sys/sbuf.h>
 #include <sys/sched.h>
 #include <sys/sf_buf.h>

Modified: user/attilio/vmobj-rwlock/sys/dev/netmap/netmap.c
==============================================================================
--- user/attilio/vmobj-rwlock/sys/dev/netmap/netmap.c	Wed Feb 20 06:48:39 2013	(r247020)
+++ user/attilio/vmobj-rwlock/sys/dev/netmap/netmap.c	Wed Feb 20 10:38:34 2013	(r247021)
@@ -81,6 +81,7 @@ __FBSDID("$FreeBSD$");
 #include <sys/mman.h>	/* PROT_EXEC */
 #include <sys/poll.h>
 #include <sys/proc.h>
+#include <sys/rwlock.h>
 #include <vm/vm.h>	/* vtophys */
 #include <vm/pmap.h>	/* vtophys */
 #include <sys/socket.h> /* sockaddrs */

Modified: user/attilio/vmobj-rwlock/sys/dev/sound/pcm/dsp.c
==============================================================================
--- user/attilio/vmobj-rwlock/sys/dev/sound/pcm/dsp.c	Wed Feb 20 06:48:39 2013	(r247020)
+++ user/attilio/vmobj-rwlock/sys/dev/sound/pcm/dsp.c	Wed Feb 20 10:38:34 2013	(r247021)
@@ -32,6 +32,8 @@
 
 #include <dev/sound/pcm/sound.h>
 #include <sys/ctype.h>
+#include <sys/lock.h>
+#include <sys/rwlock.h>
 #include <sys/sysent.h>
 
 #include <vm/vm.h>

Modified: user/attilio/vmobj-rwlock/sys/fs/fuse/fuse_io.c
==============================================================================
--- user/attilio/vmobj-rwlock/sys/fs/fuse/fuse_io.c	Wed Feb 20 06:48:39 2013	(r247020)
+++ user/attilio/vmobj-rwlock/sys/fs/fuse/fuse_io.c	Wed Feb 20 10:38:34 2013	(r247021)
@@ -69,6 +69,7 @@ __FBSDID("$FreeBSD$");
 #include <sys/lock.h>
 #include <sys/sx.h>
 #include <sys/mutex.h>
+#include <sys/rwlock.h>
 #include <sys/proc.h>
 #include <sys/mount.h>
 #include <sys/vnode.h>
@@ -87,8 +88,6 @@ __FBSDID("$FreeBSD$");
 #include <vm/vm_map.h>
 #include <vm/vm_page.h>
 #include <vm/vm_object.h>
-#include <vm/vm_pager.h>
-#include <vm/vnode_pager.h>
 #include <vm/vm_object.h>
 
 #include "fuse.h"

Modified: user/attilio/vmobj-rwlock/sys/fs/fuse/fuse_vnops.c
==============================================================================
--- user/attilio/vmobj-rwlock/sys/fs/fuse/fuse_vnops.c	Wed Feb 20 06:48:39 2013	(r247020)
+++ user/attilio/vmobj-rwlock/sys/fs/fuse/fuse_vnops.c	Wed Feb 20 10:38:34 2013	(r247021)
@@ -67,7 +67,7 @@ __FBSDID("$FreeBSD$");
 #include <sys/malloc.h>
 #include <sys/queue.h>
 #include <sys/lock.h>
-#include <sys/mutex.h>
+#include <sys/rwlock.h>
 #include <sys/sx.h>
 #include <sys/proc.h>
 #include <sys/mount.h>

Modified: user/attilio/vmobj-rwlock/sys/fs/nfsclient/nfs_clbio.c
==============================================================================
--- user/attilio/vmobj-rwlock/sys/fs/nfsclient/nfs_clbio.c	Wed Feb 20 06:48:39 2013	(r247020)
+++ user/attilio/vmobj-rwlock/sys/fs/nfsclient/nfs_clbio.c	Wed Feb 20 10:38:34 2013	(r247021)
@@ -43,6 +43,7 @@ __FBSDID("$FreeBSD$");
 #include <sys/buf.h>
 #include <sys/kernel.h>
 #include <sys/mount.h>
+#include <sys/rwlock.h>
 #include <sys/vmmeter.h>
 #include <sys/vnode.h>
 

Modified: user/attilio/vmobj-rwlock/sys/fs/procfs/procfs_map.c
==============================================================================
--- user/attilio/vmobj-rwlock/sys/fs/procfs/procfs_map.c	Wed Feb 20 06:48:39 2013	(r247020)
+++ user/attilio/vmobj-rwlock/sys/fs/procfs/procfs_map.c	Wed Feb 20 10:38:34 2013	(r247021)
@@ -43,9 +43,9 @@
 #include <sys/filedesc.h>
 #include <sys/malloc.h>
 #include <sys/mount.h>
-#include <sys/mutex.h>
 #include <sys/proc.h>
 #include <sys/resourcevar.h>
+#include <sys/rwlock.h>
 #include <sys/sbuf.h>
 #ifdef COMPAT_FREEBSD32
 #include <sys/sysent.h>

Modified: user/attilio/vmobj-rwlock/sys/fs/tmpfs/tmpfs_subr.c
==============================================================================
--- user/attilio/vmobj-rwlock/sys/fs/tmpfs/tmpfs_subr.c	Wed Feb 20 06:48:39 2013	(r247020)
+++ user/attilio/vmobj-rwlock/sys/fs/tmpfs/tmpfs_subr.c	Wed Feb 20 10:38:34 2013	(r247021)
@@ -38,9 +38,11 @@ __FBSDID("$FreeBSD$");
 
 #include <sys/param.h>
 #include <sys/fnv_hash.h>
+#include <sys/lock.h>
 #include <sys/namei.h>
 #include <sys/priv.h>
 #include <sys/proc.h>
+#include <sys/rwlock.h>
 #include <sys/stat.h>
 #include <sys/systm.h>
 #include <sys/sysctl.h>

Modified: user/attilio/vmobj-rwlock/sys/fs/tmpfs/tmpfs_vnops.c
==============================================================================
--- user/attilio/vmobj-rwlock/sys/fs/tmpfs/tmpfs_vnops.c	Wed Feb 20 06:48:39 2013	(r247020)
+++ user/attilio/vmobj-rwlock/sys/fs/tmpfs/tmpfs_vnops.c	Wed Feb 20 10:38:34 2013	(r247021)
@@ -39,9 +39,11 @@ __FBSDID("$FreeBSD$");
 #include <sys/param.h>
 #include <sys/fcntl.h>
 #include <sys/lockf.h>
+#include <sys/lock.h>
 #include <sys/namei.h>
 #include <sys/priv.h>
 #include <sys/proc.h>
+#include <sys/rwlock.h>
 #include <sys/sched.h>
 #include <sys/sf_buf.h>
 #include <sys/stat.h>

Modified: user/attilio/vmobj-rwlock/sys/i386/i386/machdep.c
==============================================================================
--- user/attilio/vmobj-rwlock/sys/i386/i386/machdep.c	Wed Feb 20 06:48:39 2013	(r247020)
+++ user/attilio/vmobj-rwlock/sys/i386/i386/machdep.c	Wed Feb 20 10:38:34 2013	(r247021)
@@ -81,6 +81,7 @@ __FBSDID("$FreeBSD$");
 #include <sys/pcpu.h>
 #include <sys/ptrace.h>
 #include <sys/reboot.h>
+#include <sys/rwlock.h>
 #include <sys/sched.h>
 #include <sys/signalvar.h>
 #ifdef SMP

Modified: user/attilio/vmobj-rwlock/sys/i386/i386/pmap.c
==============================================================================
--- user/attilio/vmobj-rwlock/sys/i386/i386/pmap.c	Wed Feb 20 06:48:39 2013	(r247020)
+++ user/attilio/vmobj-rwlock/sys/i386/i386/pmap.c	Wed Feb 20 10:38:34 2013	(r247021)
@@ -3712,7 +3712,7 @@ pmap_enter_object(pmap_t pmap, vm_offset
 	vm_page_t m, mpte;
 	vm_pindex_t diff, psize;
 
-	VM_OBJECT_LOCK_ASSERT(m_start->object, MA_OWNED);
+	VM_OBJECT_LOCK_ASSERT(m_start->object, RA_WLOCKED);
 	psize = atop(end - start);
 	mpte = NULL;
 	m = m_start;
@@ -3890,7 +3890,7 @@ pmap_object_init_pt(pmap_t pmap, vm_offs
 	vm_page_t p;
 	int pat_mode;
 
-	VM_OBJECT_LOCK_ASSERT(object, MA_OWNED);
+	VM_OBJECT_LOCK_ASSERT(object, RA_WLOCKED);
 	KASSERT(object->type == OBJT_DEVICE || object->type == OBJT_SG,
 	    ("pmap_object_init_pt: non-device object"));
 	if (pseflag && 
@@ -4509,7 +4509,7 @@ pmap_is_modified(vm_page_t m)
 	 * concurrently set while the object is locked.  Thus, if PGA_WRITEABLE
 	 * is clear, no PTEs can have PG_M set.
 	 */
-	VM_OBJECT_LOCK_ASSERT(m->object, MA_OWNED);
+	VM_OBJECT_LOCK_ASSERT(m->object, RA_WLOCKED);
 	if ((m->oflags & VPO_BUSY) == 0 &&
 	    (m->aflags & PGA_WRITEABLE) == 0)
 		return (FALSE);
@@ -4644,7 +4644,7 @@ pmap_remove_write(vm_page_t m)
 	 * another thread while the object is locked.  Thus, if PGA_WRITEABLE
 	 * is clear, no page table entries need updating.
 	 */
-	VM_OBJECT_LOCK_ASSERT(m->object, MA_OWNED);
+	VM_OBJECT_LOCK_ASSERT(m->object, RA_WLOCKED);
 	if ((m->oflags & VPO_BUSY) == 0 &&
 	    (m->aflags & PGA_WRITEABLE) == 0)
 		return;
@@ -4796,7 +4796,7 @@ pmap_clear_modify(vm_page_t m)
 
 	KASSERT((m->oflags & VPO_UNMANAGED) == 0,
 	    ("pmap_clear_modify: page %p is not managed", m));
-	VM_OBJECT_LOCK_ASSERT(m->object, MA_OWNED);
+	VM_OBJECT_LOCK_ASSERT(m->object, RA_WLOCKED);
 	KASSERT((m->oflags & VPO_BUSY) == 0,
 	    ("pmap_clear_modify: page %p is busy", m));
 

Modified: user/attilio/vmobj-rwlock/sys/i386/xen/pmap.c
==============================================================================
--- user/attilio/vmobj-rwlock/sys/i386/xen/pmap.c	Wed Feb 20 06:48:39 2013	(r247020)
+++ user/attilio/vmobj-rwlock/sys/i386/xen/pmap.c	Wed Feb 20 10:38:34 2013	(r247021)
@@ -2871,7 +2871,7 @@ pmap_enter_object(pmap_t pmap, vm_offset
 	multicall_entry_t *mclp = mcl;
 	int error, count = 0;
 
-	VM_OBJECT_LOCK_ASSERT(m_start->object, MA_OWNED);
+	VM_OBJECT_LOCK_ASSERT(m_start->object, RA_WLOCKED);
 	psize = atop(end - start);
 	mpte = NULL;
 	m = m_start;
@@ -3111,7 +3111,7 @@ pmap_object_init_pt(pmap_t pmap, vm_offs
 	vm_page_t p;
 	int pat_mode;
 
-	VM_OBJECT_LOCK_ASSERT(object, MA_OWNED);
+	VM_OBJECT_LOCK_ASSERT(object, RA_WLOCKED);
 	KASSERT(object->type == OBJT_DEVICE || object->type == OBJT_SG,
 	    ("pmap_object_init_pt: non-device object"));
 	if (pseflag && 
@@ -3657,7 +3657,7 @@ pmap_is_modified(vm_page_t m)
 	 * concurrently set while the object is locked.  Thus, if PGA_WRITEABLE
 	 * is clear, no PTEs can have PG_M set.
 	 */
-	VM_OBJECT_LOCK_ASSERT(m->object, MA_OWNED);
+	VM_OBJECT_LOCK_ASSERT(m->object, RA_WLOCKED);
 	if ((m->oflags & VPO_BUSY) == 0 &&
 	    (m->aflags & PGA_WRITEABLE) == 0)
 		return (rv);
@@ -3788,7 +3788,7 @@ pmap_remove_write(vm_page_t m)
 	 * another thread while the object is locked.  Thus, if PGA_WRITEABLE
 	 * is clear, no page table entries need updating.
 	 */
-	VM_OBJECT_LOCK_ASSERT(m->object, MA_OWNED);
+	VM_OBJECT_LOCK_ASSERT(m->object, RA_WLOCKED);
 	if ((m->oflags & VPO_BUSY) == 0 &&
 	    (m->aflags & PGA_WRITEABLE) == 0)
 		return;
@@ -3889,7 +3889,7 @@ pmap_clear_modify(vm_page_t m)
 
 	KASSERT((m->oflags & VPO_UNMANAGED) == 0,
 	    ("pmap_clear_modify: page %p is not managed", m));
-	VM_OBJECT_LOCK_ASSERT(m->object, MA_OWNED);
+	VM_OBJECT_LOCK_ASSERT(m->object, RA_WLOCKED);
 	KASSERT((m->oflags & VPO_BUSY) == 0,
 	    ("pmap_clear_modify: page %p is busy", m));
 

Modified: user/attilio/vmobj-rwlock/sys/ia64/ia64/pmap.c
==============================================================================
--- user/attilio/vmobj-rwlock/sys/ia64/ia64/pmap.c	Wed Feb 20 06:48:39 2013	(r247020)
+++ user/attilio/vmobj-rwlock/sys/ia64/ia64/pmap.c	Wed Feb 20 10:38:34 2013	(r247021)
@@ -1802,7 +1802,7 @@ pmap_enter_object(pmap_t pmap, vm_offset
 	vm_page_t m;
 	vm_pindex_t diff, psize;
 
-	VM_OBJECT_LOCK_ASSERT(m_start->object, MA_OWNED);
+	VM_OBJECT_LOCK_ASSERT(m_start->object, RA_WLOCKED);
 	psize = atop(end - start);
 	m = m_start;
 	rw_wlock(&pvh_global_lock);
@@ -1893,7 +1893,7 @@ pmap_object_init_pt(pmap_t pmap, vm_offs
 		    vm_size_t size)
 {
 
-	VM_OBJECT_LOCK_ASSERT(object, MA_OWNED);
+	VM_OBJECT_LOCK_ASSERT(object, RA_WLOCKED);
 	KASSERT(object->type == OBJT_DEVICE || object->type == OBJT_SG,
 	    ("pmap_object_init_pt: non-device object"));
 }
@@ -2211,7 +2211,7 @@ pmap_is_modified(vm_page_t m)
 	 * concurrently set while the object is locked.  Thus, if PGA_WRITEABLE
 	 * is clear, no PTEs can be dirty.
 	 */
-	VM_OBJECT_LOCK_ASSERT(m->object, MA_OWNED);
+	VM_OBJECT_LOCK_ASSERT(m->object, RA_WLOCKED);
 	if ((m->oflags & VPO_BUSY) == 0 &&
 	    (m->aflags & PGA_WRITEABLE) == 0)
 		return (rv);
@@ -2295,7 +2295,7 @@ pmap_clear_modify(vm_page_t m)
 
 	KASSERT((m->oflags & VPO_UNMANAGED) == 0,
 	    ("pmap_clear_modify: page %p is not managed", m));
-	VM_OBJECT_LOCK_ASSERT(m->object, MA_OWNED);
+	VM_OBJECT_LOCK_ASSERT(m->object, RA_WLOCKED);
 	KASSERT((m->oflags & VPO_BUSY) == 0,
 	    ("pmap_clear_modify: page %p is busy", m));
 
@@ -2373,7 +2373,7 @@ pmap_remove_write(vm_page_t m)
 	 * another thread while the object is locked.  Thus, if PGA_WRITEABLE
 	 * is clear, no page table entries need updating.
 	 */
-	VM_OBJECT_LOCK_ASSERT(m->object, MA_OWNED);
+	VM_OBJECT_LOCK_ASSERT(m->object, RA_WLOCKED);
 	if ((m->oflags & VPO_BUSY) == 0 &&
 	    (m->aflags & PGA_WRITEABLE) == 0)
 		return;

Modified: user/attilio/vmobj-rwlock/sys/kern/imgact_elf.c
==============================================================================
--- user/attilio/vmobj-rwlock/sys/kern/imgact_elf.c	Wed Feb 20 06:48:39 2013	(r247020)
+++ user/attilio/vmobj-rwlock/sys/kern/imgact_elf.c	Wed Feb 20 10:38:34 2013	(r247021)
@@ -45,7 +45,6 @@ __FBSDID("$FreeBSD$");
 #include <sys/lock.h>
 #include <sys/malloc.h>
 #include <sys/mount.h>
-#include <sys/mutex.h>
 #include <sys/mman.h>
 #include <sys/namei.h>
 #include <sys/pioctl.h>
@@ -53,6 +52,7 @@ __FBSDID("$FreeBSD$");
 #include <sys/procfs.h>
 #include <sys/racct.h>
 #include <sys/resourcevar.h>
+#include <sys/rwlock.h>
 #include <sys/sf_buf.h>
 #include <sys/smp.h>
 #include <sys/systm.h>

Modified: user/attilio/vmobj-rwlock/sys/kern/kern_exec.c
==============================================================================
--- user/attilio/vmobj-rwlock/sys/kern/kern_exec.c	Wed Feb 20 06:48:39 2013	(r247020)
+++ user/attilio/vmobj-rwlock/sys/kern/kern_exec.c	Wed Feb 20 10:38:34 2013	(r247021)
@@ -57,6 +57,7 @@ __FBSDID("$FreeBSD$");
 #include <sys/pioctl.h>
 #include <sys/namei.h>
 #include <sys/resourcevar.h>
+#include <sys/rwlock.h>
 #include <sys/sched.h>
 #include <sys/sdt.h>
 #include <sys/sf_buf.h>

Modified: user/attilio/vmobj-rwlock/sys/kern/kern_proc.c
==============================================================================
--- user/attilio/vmobj-rwlock/sys/kern/kern_proc.c	Wed Feb 20 06:48:39 2013	(r247020)
+++ user/attilio/vmobj-rwlock/sys/kern/kern_proc.c	Wed Feb 20 10:38:34 2013	(r247021)
@@ -55,6 +55,7 @@ __FBSDID("$FreeBSD$");
 #include <sys/ptrace.h>
 #include <sys/refcount.h>
 #include <sys/resourcevar.h>
+#include <sys/rwlock.h>
 #include <sys/sbuf.h>
 #include <sys/sysent.h>
 #include <sys/sched.h>

Modified: user/attilio/vmobj-rwlock/sys/kern/kern_sharedpage.c
==============================================================================
--- user/attilio/vmobj-rwlock/sys/kern/kern_sharedpage.c	Wed Feb 20 06:48:39 2013	(r247020)
+++ user/attilio/vmobj-rwlock/sys/kern/kern_sharedpage.c	Wed Feb 20 10:38:34 2013	(r247021)
@@ -34,7 +34,7 @@ __FBSDID("$FreeBSD$");
 #include <sys/systm.h>
 #include <sys/kernel.h>
 #include <sys/lock.h>
-#include <sys/mutex.h>
+#include <sys/rwlock.h>
 #include <sys/sysent.h>
 #include <sys/sysctl.h>
 #include <sys/vdso.h>

Modified: user/attilio/vmobj-rwlock/sys/kern/kern_shutdown.c
==============================================================================
--- user/attilio/vmobj-rwlock/sys/kern/kern_shutdown.c	Wed Feb 20 06:48:39 2013	(r247020)
+++ user/attilio/vmobj-rwlock/sys/kern/kern_shutdown.c	Wed Feb 20 10:38:34 2013	(r247021)
@@ -62,6 +62,7 @@ __FBSDID("$FreeBSD$");
 #include <sys/proc.h>
 #include <sys/reboot.h>
 #include <sys/resourcevar.h>
+#include <sys/rwlock.h>
 #include <sys/sched.h>
 #include <sys/smp.h>
 #include <sys/sysctl.h>

Modified: user/attilio/vmobj-rwlock/sys/kern/subr_uio.c
==============================================================================
--- user/attilio/vmobj-rwlock/sys/kern/subr_uio.c	Wed Feb 20 06:48:39 2013	(r247020)
+++ user/attilio/vmobj-rwlock/sys/kern/subr_uio.c	Wed Feb 20 10:38:34 2013	(r247021)
@@ -45,9 +45,9 @@ __FBSDID("$FreeBSD$");
 #include <sys/limits.h>
 #include <sys/lock.h>
 #include <sys/mman.h>
-#include <sys/mutex.h>
 #include <sys/proc.h>
 #include <sys/resourcevar.h>
+#include <sys/rwlock.h>
 #include <sys/sched.h>
 #include <sys/sysctl.h>
 #include <sys/vnode.h>

Modified: user/attilio/vmobj-rwlock/sys/kern/sys_process.c
==============================================================================
--- user/attilio/vmobj-rwlock/sys/kern/sys_process.c	Wed Feb 20 06:48:39 2013	(r247020)
+++ user/attilio/vmobj-rwlock/sys/kern/sys_process.c	Wed Feb 20 10:38:34 2013	(r247021)
@@ -44,6 +44,7 @@ __FBSDID("$FreeBSD$");
 #include <sys/proc.h>
 #include <sys/vnode.h>
 #include <sys/ptrace.h>
+#include <sys/rwlock.h>
 #include <sys/sx.h>
 #include <sys/malloc.h>
 #include <sys/signalvar.h>
@@ -59,7 +60,6 @@ __FBSDID("$FreeBSD$");
 #include <vm/vm_kern.h>
 #include <vm/vm_object.h>
 #include <vm/vm_page.h>
-#include <vm/vm_pager.h>
 #include <vm/vm_param.h>
 
 #ifdef COMPAT_FREEBSD32

Modified: user/attilio/vmobj-rwlock/sys/kern/sysv_shm.c
==============================================================================
--- user/attilio/vmobj-rwlock/sys/kern/sysv_shm.c	Wed Feb 20 06:48:39 2013	(r247020)
+++ user/attilio/vmobj-rwlock/sys/kern/sysv_shm.c	Wed Feb 20 10:38:34 2013	(r247021)
@@ -79,6 +79,7 @@ __FBSDID("$FreeBSD$");
 #include <sys/mutex.h>
 #include <sys/racct.h>
 #include <sys/resourcevar.h>
+#include <sys/rwlock.h>
 #include <sys/stat.h>
 #include <sys/syscall.h>
 #include <sys/syscallsubr.h>

Modified: user/attilio/vmobj-rwlock/sys/kern/uipc_shm.c
==============================================================================
--- user/attilio/vmobj-rwlock/sys/kern/uipc_shm.c	Wed Feb 20 06:48:39 2013	(r247020)
+++ user/attilio/vmobj-rwlock/sys/kern/uipc_shm.c	Wed Feb 20 10:38:34 2013	(r247021)
@@ -61,6 +61,7 @@ __FBSDID("$FreeBSD$");
 #include <sys/proc.h>
 #include <sys/refcount.h>
 #include <sys/resourcevar.h>
+#include <sys/rwlock.h>
 #include <sys/stat.h>
 #include <sys/sysctl.h>
 #include <sys/sysproto.h>

Modified: user/attilio/vmobj-rwlock/sys/kern/uipc_syscalls.c
==============================================================================
--- user/attilio/vmobj-rwlock/sys/kern/uipc_syscalls.c	Wed Feb 20 06:48:39 2013	(r247020)
+++ user/attilio/vmobj-rwlock/sys/kern/uipc_syscalls.c	Wed Feb 20 10:38:34 2013	(r247021)
@@ -60,6 +60,7 @@ __FBSDID("$FreeBSD$");
 #include <sys/mount.h>
 #include <sys/mbuf.h>
 #include <sys/protosw.h>
+#include <sys/rwlock.h>
 #include <sys/sf_buf.h>
 #include <sys/sysent.h>
 #include <sys/socket.h>

Modified: user/attilio/vmobj-rwlock/sys/kern/vfs_aio.c
==============================================================================
--- user/attilio/vmobj-rwlock/sys/kern/vfs_aio.c	Wed Feb 20 06:48:39 2013	(r247020)
+++ user/attilio/vmobj-rwlock/sys/kern/vfs_aio.c	Wed Feb 20 10:38:34 2013	(r247021)
@@ -46,6 +46,7 @@ __FBSDID("$FreeBSD$");
 #include <sys/resourcevar.h>
 #include <sys/signalvar.h>
 #include <sys/protosw.h>
+#include <sys/rwlock.h>
 #include <sys/sema.h>
 #include <sys/socket.h>
 #include <sys/socketvar.h>

Modified: user/attilio/vmobj-rwlock/sys/kern/vfs_bio.c
==============================================================================
--- user/attilio/vmobj-rwlock/sys/kern/vfs_bio.c	Wed Feb 20 06:48:39 2013	(r247020)
+++ user/attilio/vmobj-rwlock/sys/kern/vfs_bio.c	Wed Feb 20 10:38:34 2013	(r247021)
@@ -58,6 +58,7 @@ __FBSDID("$FreeBSD$");
 #include <sys/kthread.h>
 #include <sys/proc.h>
 #include <sys/resourcevar.h>
+#include <sys/rwlock.h>
 #include <sys/sysctl.h>
 #include <sys/vmmeter.h>
 #include <sys/vnode.h>
@@ -458,7 +459,7 @@ vfs_buf_test_cache(struct buf *bp,
 		  vm_page_t m)
 {
 
-	VM_OBJECT_LOCK_ASSERT(m->object, MA_OWNED);
+	VM_OBJECT_LOCK_ASSERT(m->object, RA_WLOCKED);
 	if (bp->b_flags & B_CACHE) {
 		int base = (foff + off) & PAGE_MASK;
 		if (vm_page_is_valid(m, base, size) == 0)
@@ -2533,7 +2534,7 @@ vfs_setdirty_locked_object(struct buf *b
 	int i;
 
 	object = bp->b_bufobj->bo_object;
-	VM_OBJECT_LOCK_ASSERT(object, MA_OWNED);
+	VM_OBJECT_LOCK_ASSERT(object, RA_WLOCKED);
 
 	/*
 	 * We qualify the scan for modified pages on whether the
@@ -3566,7 +3567,7 @@ vfs_drain_busy_pages(struct buf *bp)
 	vm_page_t m;
 	int i, last_busied;
 
-	VM_OBJECT_LOCK_ASSERT(bp->b_bufobj->bo_object, MA_OWNED);
+	VM_OBJECT_LOCK_ASSERT(bp->b_bufobj->bo_object, RA_WLOCKED);
 	last_busied = 0;
 	for (i = 0; i < bp->b_npages; i++) {
 		m = bp->b_pages[i];
@@ -3719,7 +3720,7 @@ vfs_bio_clrbuf(struct buf *bp) 
 		if (bp->b_pages[0] == bogus_page)
 			goto unlock;
 		mask = (1 << (bp->b_bufsize / DEV_BSIZE)) - 1;
-		VM_OBJECT_LOCK_ASSERT(bp->b_pages[0]->object, MA_OWNED);
+		VM_OBJECT_LOCK_ASSERT(bp->b_pages[0]->object, RA_WLOCKED);
 		if ((bp->b_pages[0]->valid & mask) == mask)
 			goto unlock;
 		if ((bp->b_pages[0]->valid & mask) == 0) {
@@ -3738,7 +3739,7 @@ vfs_bio_clrbuf(struct buf *bp) 
 			continue;
 		j = ((vm_offset_t)sa & PAGE_MASK) / DEV_BSIZE;
 		mask = ((1 << ((ea - sa) / DEV_BSIZE)) - 1) << j;
-		VM_OBJECT_LOCK_ASSERT(bp->b_pages[i]->object, MA_OWNED);
+		VM_OBJECT_LOCK_ASSERT(bp->b_pages[i]->object, RA_WLOCKED);
 		if ((bp->b_pages[i]->valid & mask) == mask)
 			continue;
 		if ((bp->b_pages[i]->valid & mask) == 0)

Modified: user/attilio/vmobj-rwlock/sys/kern/vfs_cluster.c
==============================================================================
--- user/attilio/vmobj-rwlock/sys/kern/vfs_cluster.c	Wed Feb 20 06:48:39 2013	(r247020)
+++ user/attilio/vmobj-rwlock/sys/kern/vfs_cluster.c	Wed Feb 20 10:38:34 2013	(r247021)
@@ -46,6 +46,7 @@ __FBSDID("$FreeBSD$");
 #include <sys/malloc.h>
 #include <sys/mount.h>
 #include <sys/resourcevar.h>
+#include <sys/rwlock.h>
 #include <sys/vmmeter.h>
 #include <vm/vm.h>
 #include <vm/vm_object.h>
@@ -413,7 +414,7 @@ cluster_rbuild(vp, filesize, lbn, blkno,
 				if (toff + tinc > PAGE_SIZE)
 					tinc = PAGE_SIZE - toff;
 				VM_OBJECT_LOCK_ASSERT(tbp->b_pages[j]->object,
-				    MA_OWNED);
+				    RA_WLOCKED);
 				if ((tbp->b_pages[j]->valid &
 				    vm_page_bits(toff, tinc)) != 0)
 					break;
@@ -489,7 +490,7 @@ cluster_rbuild(vp, filesize, lbn, blkno,
 	 */
 	VM_OBJECT_LOCK(bp->b_bufobj->bo_object);
 	for (j = 0; j < bp->b_npages; j++) {
-		VM_OBJECT_LOCK_ASSERT(bp->b_pages[j]->object, MA_OWNED);
+		VM_OBJECT_LOCK_ASSERT(bp->b_pages[j]->object, RA_WLOCKED);
 		if (bp->b_pages[j]->valid == VM_PAGE_BITS_ALL)
 			bp->b_pages[j] = bogus_page;
 	}

Modified: user/attilio/vmobj-rwlock/sys/kern/vfs_default.c
==============================================================================
--- user/attilio/vmobj-rwlock/sys/kern/vfs_default.c	Wed Feb 20 06:48:39 2013	(r247020)
+++ user/attilio/vmobj-rwlock/sys/kern/vfs_default.c	Wed Feb 20 10:38:34 2013	(r247021)
@@ -47,8 +47,8 @@ __FBSDID("$FreeBSD$");
 #include <sys/lockf.h>
 #include <sys/malloc.h>
 #include <sys/mount.h>
-#include <sys/mutex.h>
 #include <sys/namei.h>
+#include <sys/rwlock.h>
 #include <sys/fcntl.h>
 #include <sys/unistd.h>
 #include <sys/vnode.h>

Modified: user/attilio/vmobj-rwlock/sys/kern/vfs_subr.c
==============================================================================
--- user/attilio/vmobj-rwlock/sys/kern/vfs_subr.c	Wed Feb 20 06:48:39 2013	(r247020)
+++ user/attilio/vmobj-rwlock/sys/kern/vfs_subr.c	Wed Feb 20 10:38:34 2013	(r247021)
@@ -67,6 +67,7 @@ __FBSDID("$FreeBSD$");
 #include <sys/namei.h>
 #include <sys/priv.h>
 #include <sys/reboot.h>
+#include <sys/rwlock.h>
 #include <sys/sched.h>
 #include <sys/sleepqueue.h>
 #include <sys/smp.h>

Modified: user/attilio/vmobj-rwlock/sys/kern/vfs_syscalls.c
==============================================================================
--- user/attilio/vmobj-rwlock/sys/kern/vfs_syscalls.c	Wed Feb 20 06:48:39 2013	(r247020)
+++ user/attilio/vmobj-rwlock/sys/kern/vfs_syscalls.c	Wed Feb 20 10:38:34 2013	(r247021)
@@ -61,6 +61,7 @@ __FBSDID("$FreeBSD$");
 #include <sys/filio.h>
 #include <sys/limits.h>
 #include <sys/linker.h>
+#include <sys/rwlock.h>
 #include <sys/sdt.h>
 #include <sys/stat.h>
 #include <sys/sx.h>

Modified: user/attilio/vmobj-rwlock/sys/kern/vfs_vnops.c
==============================================================================
--- user/attilio/vmobj-rwlock/sys/kern/vfs_vnops.c	Wed Feb 20 06:48:39 2013	(r247020)
+++ user/attilio/vmobj-rwlock/sys/kern/vfs_vnops.c	Wed Feb 20 10:38:34 2013	(r247021)
@@ -55,6 +55,7 @@ __FBSDID("$FreeBSD$");
 #include <sys/buf.h>
 #include <sys/filio.h>
 #include <sys/resourcevar.h>
+#include <sys/rwlock.h>
 #include <sys/sx.h>
 #include <sys/sysctl.h>
 #include <sys/ttycom.h>

Modified: user/attilio/vmobj-rwlock/sys/mips/mips/pmap.c
==============================================================================
--- user/attilio/vmobj-rwlock/sys/mips/mips/pmap.c	Wed Feb 20 06:48:39 2013	(r247020)
+++ user/attilio/vmobj-rwlock/sys/mips/mips/pmap.c	Wed Feb 20 10:38:34 2013	(r247021)
@@ -2399,7 +2399,7 @@ pmap_enter_object(pmap_t pmap, vm_offset
 	vm_page_t m, mpte;
 	vm_pindex_t diff, psize;
 
-	VM_OBJECT_LOCK_ASSERT(m_start->object, MA_OWNED);
+	VM_OBJECT_LOCK_ASSERT(m_start->object, RA_WLOCKED);
 	psize = atop(end - start);
 	mpte = NULL;
 	m = m_start;
@@ -2423,7 +2423,7 @@ void
 pmap_object_init_pt(pmap_t pmap, vm_offset_t addr,
     vm_object_t object, vm_pindex_t pindex, vm_size_t size)
 {
-	VM_OBJECT_LOCK_ASSERT(object, MA_OWNED);
+	VM_OBJECT_LOCK_ASSERT(object, RA_WLOCKED);
 	KASSERT(object->type == OBJT_DEVICE || object->type == OBJT_SG,
 	    ("pmap_object_init_pt: non-device object"));
 }
@@ -2768,7 +2768,7 @@ pmap_remove_write(vm_page_t m)
 	 * another thread while the object is locked.  Thus, if PGA_WRITEABLE
 	 * is clear, no page table entries need updating.
 	 */
-	VM_OBJECT_LOCK_ASSERT(m->object, MA_OWNED);
+	VM_OBJECT_LOCK_ASSERT(m->object, RA_WLOCKED);
 	if ((m->oflags & VPO_BUSY) == 0 &&
 	    (m->aflags & PGA_WRITEABLE) == 0)
 		return;
@@ -2834,7 +2834,7 @@ pmap_is_modified(vm_page_t m)
 	 * concurrently set while the object is locked.  Thus, if PGA_WRITEABLE
 	 * is clear, no PTEs can have PTE_D set.
 	 */
-	VM_OBJECT_LOCK_ASSERT(m->object, MA_OWNED);
+	VM_OBJECT_LOCK_ASSERT(m->object, RA_WLOCKED);
 	if ((m->oflags & VPO_BUSY) == 0 &&
 	    (m->aflags & PGA_WRITEABLE) == 0)
 		return (FALSE);
@@ -2882,7 +2882,7 @@ pmap_clear_modify(vm_page_t m)
 
 	KASSERT((m->oflags & VPO_UNMANAGED) == 0,
 	    ("pmap_clear_modify: page %p is not managed", m));
-	VM_OBJECT_LOCK_ASSERT(m->object, MA_OWNED);
+	VM_OBJECT_LOCK_ASSERT(m->object, RA_WLOCKED);
 	KASSERT((m->oflags & VPO_BUSY) == 0,
 	    ("pmap_clear_modify: page %p is busy", m));
 

Modified: user/attilio/vmobj-rwlock/sys/nfsclient/nfs_bio.c
==============================================================================
--- user/attilio/vmobj-rwlock/sys/nfsclient/nfs_bio.c	Wed Feb 20 06:48:39 2013	(r247020)
+++ user/attilio/vmobj-rwlock/sys/nfsclient/nfs_bio.c	Wed Feb 20 10:38:34 2013	(r247021)
@@ -45,6 +45,7 @@ __FBSDID("$FreeBSD$");
 #include <sys/mbuf.h>
 #include <sys/mount.h>
 #include <sys/proc.h>
+#include <sys/rwlock.h>
 #include <sys/vmmeter.h>
 #include <sys/vnode.h>
 

Modified: user/attilio/vmobj-rwlock/sys/nfsserver/nfs_serv.c
==============================================================================
--- user/attilio/vmobj-rwlock/sys/nfsserver/nfs_serv.c	Wed Feb 20 06:48:39 2013	(r247020)
+++ user/attilio/vmobj-rwlock/sys/nfsserver/nfs_serv.c	Wed Feb 20 10:38:34 2013	(r247021)
@@ -87,6 +87,7 @@ __FBSDID("$FreeBSD$");
 #include <sys/sysctl.h>
 #include <sys/bio.h>
 #include <sys/buf.h>
+#include <sys/rwlock.h>
 
 #include <vm/vm.h>
 #include <vm/vm_extern.h>

Modified: user/attilio/vmobj-rwlock/sys/ofed/include/linux/linux_compat.c
==============================================================================
--- user/attilio/vmobj-rwlock/sys/ofed/include/linux/linux_compat.c	Wed Feb 20 06:48:39 2013	(r247020)
+++ user/attilio/vmobj-rwlock/sys/ofed/include/linux/linux_compat.c	Wed Feb 20 10:38:34 2013	(r247021)
@@ -37,6 +37,7 @@
 #include <sys/fcntl.h>
 #include <sys/file.h>
 #include <sys/filio.h>
+#include <sys/rwlock.h>
 
 #include <vm/vm.h>
 #include <vm/pmap.h>

Modified: user/attilio/vmobj-rwlock/sys/powerpc/aim/mmu_oea.c
==============================================================================
--- user/attilio/vmobj-rwlock/sys/powerpc/aim/mmu_oea.c	Wed Feb 20 06:48:39 2013	(r247020)
+++ user/attilio/vmobj-rwlock/sys/powerpc/aim/mmu_oea.c	Wed Feb 20 10:38:34 2013	(r247021)
@@ -1293,7 +1293,7 @@ moea_is_modified(mmu_t mmu, vm_page_t m)
 	 * concurrently set while the object is locked.  Thus, if PGA_WRITEABLE
 	 * is clear, no PTEs can have PTE_CHG set.
 	 */
-	VM_OBJECT_LOCK_ASSERT(m->object, MA_OWNED);
+	VM_OBJECT_LOCK_ASSERT(m->object, RA_WLOCKED);
 	if ((m->oflags & VPO_BUSY) == 0 &&
 	    (m->aflags & PGA_WRITEABLE) == 0)
 		return (FALSE);
@@ -1333,7 +1333,7 @@ moea_clear_modify(mmu_t mmu, vm_page_t m
 
 	KASSERT((m->oflags & VPO_UNMANAGED) == 0,
 	    ("moea_clear_modify: page %p is not managed", m));
-	VM_OBJECT_LOCK_ASSERT(m->object, MA_OWNED);
+	VM_OBJECT_LOCK_ASSERT(m->object, RA_WLOCKED);
 	KASSERT((m->oflags & VPO_BUSY) == 0,
 	    ("moea_clear_modify: page %p is busy", m));
 
@@ -1368,7 +1368,7 @@ moea_remove_write(mmu_t mmu, vm_page_t m
 	 * another thread while the object is locked.  Thus, if PGA_WRITEABLE
 	 * is clear, no page table entries need updating.
 	 */
-	VM_OBJECT_LOCK_ASSERT(m->object, MA_OWNED);
+	VM_OBJECT_LOCK_ASSERT(m->object, RA_WLOCKED);
 	if ((m->oflags & VPO_BUSY) == 0 &&
 	    (m->aflags & PGA_WRITEABLE) == 0)
 		return;

Modified: user/attilio/vmobj-rwlock/sys/powerpc/aim/mmu_oea64.c
==============================================================================
--- user/attilio/vmobj-rwlock/sys/powerpc/aim/mmu_oea64.c	Wed Feb 20 06:48:39 2013	(r247020)
+++ user/attilio/vmobj-rwlock/sys/powerpc/aim/mmu_oea64.c	Wed Feb 20 10:38:34 2013	(r247021)
@@ -1449,7 +1449,7 @@ moea64_is_modified(mmu_t mmu, vm_page_t 
 	 * concurrently set while the object is locked.  Thus, if PGA_WRITEABLE
 	 * is clear, no PTEs can have LPTE_CHG set.
 	 */
-	VM_OBJECT_LOCK_ASSERT(m->object, MA_OWNED);
+	VM_OBJECT_LOCK_ASSERT(m->object, RA_WLOCKED);
 	if ((m->oflags & VPO_BUSY) == 0 &&
 	    (m->aflags & PGA_WRITEABLE) == 0)
 		return (FALSE);
@@ -1484,7 +1484,7 @@ moea64_clear_modify(mmu_t mmu, vm_page_t
 
 	KASSERT((m->oflags & VPO_UNMANAGED) == 0,
 	    ("moea64_clear_modify: page %p is not managed", m));
-	VM_OBJECT_LOCK_ASSERT(m->object, MA_OWNED);
+	VM_OBJECT_LOCK_ASSERT(m->object, RA_WLOCKED);
 	KASSERT((m->oflags & VPO_BUSY) == 0,
 	    ("moea64_clear_modify: page %p is busy", m));
 
@@ -1517,7 +1517,7 @@ moea64_remove_write(mmu_t mmu, vm_page_t
 	 * another thread while the object is locked.  Thus, if PGA_WRITEABLE
 	 * is clear, no page table entries need updating.
 	 */
-	VM_OBJECT_LOCK_ASSERT(m->object, MA_OWNED);
+	VM_OBJECT_LOCK_ASSERT(m->object, RA_WLOCKED);
 	if ((m->oflags & VPO_BUSY) == 0 &&
 	    (m->aflags & PGA_WRITEABLE) == 0)
 		return;

Modified: user/attilio/vmobj-rwlock/sys/powerpc/booke/pmap.c
==============================================================================
--- user/attilio/vmobj-rwlock/sys/powerpc/booke/pmap.c	Wed Feb 20 06:48:39 2013	(r247020)
+++ user/attilio/vmobj-rwlock/sys/powerpc/booke/pmap.c	Wed Feb 20 10:38:34 2013	(r247021)
@@ -1960,7 +1960,7 @@ mmu_booke_remove_write(mmu_t mmu, vm_pag
 	 * another thread while the object is locked.  Thus, if PGA_WRITEABLE
 	 * is clear, no page table entries need updating.
 	 */
-	VM_OBJECT_LOCK_ASSERT(m->object, MA_OWNED);
+	VM_OBJECT_LOCK_ASSERT(m->object, RA_WLOCKED);
 	if ((m->oflags & VPO_BUSY) == 0 &&
 	    (m->aflags & PGA_WRITEABLE) == 0)
 		return;
@@ -2175,7 +2175,7 @@ mmu_booke_is_modified(mmu_t mmu, vm_page
 	 * concurrently set while the object is locked.  Thus, if PGA_WRITEABLE
 	 * is clear, no PTEs can be modified.
 	 */
-	VM_OBJECT_LOCK_ASSERT(m->object, MA_OWNED);
+	VM_OBJECT_LOCK_ASSERT(m->object, RA_WLOCKED);
 	if ((m->oflags & VPO_BUSY) == 0 &&
 	    (m->aflags & PGA_WRITEABLE) == 0)
 		return (rv);
@@ -2247,7 +2247,7 @@ mmu_booke_clear_modify(mmu_t mmu, vm_pag
 
 	KASSERT((m->oflags & VPO_UNMANAGED) == 0,
 	    ("mmu_booke_clear_modify: page %p is not managed", m));
-	VM_OBJECT_LOCK_ASSERT(m->object, MA_OWNED);
+	VM_OBJECT_LOCK_ASSERT(m->object, RA_WLOCKED);
 	KASSERT((m->oflags & VPO_BUSY) == 0,
 	    ("mmu_booke_clear_modify: page %p is busy", m));
 
@@ -2662,7 +2662,7 @@ mmu_booke_object_init_pt(mmu_t mmu, pmap
     vm_object_t object, vm_pindex_t pindex, vm_size_t size)
 {
 
-	VM_OBJECT_LOCK_ASSERT(object, MA_OWNED);
+	VM_OBJECT_LOCK_ASSERT(object, RA_WLOCKED);
 	KASSERT(object->type == OBJT_DEVICE || object->type == OBJT_SG,
 	    ("mmu_booke_object_init_pt: non-device object"));
 }

Modified: user/attilio/vmobj-rwlock/sys/security/mac/mac_process.c
==============================================================================
--- user/attilio/vmobj-rwlock/sys/security/mac/mac_process.c	Wed Feb 20 06:48:39 2013	(r247020)
+++ user/attilio/vmobj-rwlock/sys/security/mac/mac_process.c	Wed Feb 20 10:38:34 2013	(r247021)
@@ -54,9 +54,9 @@ __FBSDID("$FreeBSD$");
 #include <sys/kernel.h>
 #include <sys/lock.h>
 #include <sys/malloc.h>
-#include <sys/mutex.h>
 #include <sys/mac.h>
 #include <sys/proc.h>
+#include <sys/rwlock.h>
 #include <sys/sbuf.h>
 #include <sys/sdt.h>
 #include <sys/systm.h>

Modified: user/attilio/vmobj-rwlock/sys/sparc64/sparc64/pmap.c
==============================================================================
--- user/attilio/vmobj-rwlock/sys/sparc64/sparc64/pmap.c	Wed Feb 20 06:48:39 2013	(r247020)
+++ user/attilio/vmobj-rwlock/sys/sparc64/sparc64/pmap.c	Wed Feb 20 10:38:34 2013	(r247021)
@@ -1663,7 +1663,7 @@ pmap_object_init_pt(pmap_t pm, vm_offset
     vm_pindex_t pindex, vm_size_t size)
 {
 
-	VM_OBJECT_LOCK_ASSERT(object, MA_OWNED);
+	VM_OBJECT_LOCK_ASSERT(object, RA_WLOCKED);
 	KASSERT(object->type == OBJT_DEVICE || object->type == OBJT_SG,
 	    ("pmap_object_init_pt: non-device object"));
 }
@@ -2061,7 +2061,7 @@ pmap_is_modified(vm_page_t m)
 	 * concurrently set while the object is locked.  Thus, if PGA_WRITEABLE
 	 * is clear, no TTEs can have TD_W set.
 	 */
-	VM_OBJECT_LOCK_ASSERT(m->object, MA_OWNED);
+	VM_OBJECT_LOCK_ASSERT(m->object, RA_WLOCKED);
 	if ((m->oflags & VPO_BUSY) == 0 &&
 	    (m->aflags & PGA_WRITEABLE) == 0)
 		return (rv);
@@ -2129,7 +2129,7 @@ pmap_clear_modify(vm_page_t m)
 
 	KASSERT((m->oflags & VPO_UNMANAGED) == 0,
 	    ("pmap_clear_modify: page %p is not managed", m));
-	VM_OBJECT_LOCK_ASSERT(m->object, MA_OWNED);
+	VM_OBJECT_LOCK_ASSERT(m->object, RA_WLOCKED);
 	KASSERT((m->oflags & VPO_BUSY) == 0,
 	    ("pmap_clear_modify: page %p is busy", m));
 
@@ -2184,7 +2184,7 @@ pmap_remove_write(vm_page_t m)
 	 * another thread while the object is locked.  Thus, if PGA_WRITEABLE
 	 * is clear, no page table entries need updating.
 	 */
-	VM_OBJECT_LOCK_ASSERT(m->object, MA_OWNED);
+	VM_OBJECT_LOCK_ASSERT(m->object, RA_WLOCKED);
 	if ((m->oflags & VPO_BUSY) == 0 &&
 	    (m->aflags & PGA_WRITEABLE) == 0)
 		return;

Modified: user/attilio/vmobj-rwlock/sys/ufs/ffs/ffs_rawread.c
==============================================================================
--- user/attilio/vmobj-rwlock/sys/ufs/ffs/ffs_rawread.c	Wed Feb 20 06:48:39 2013	(r247020)
+++ user/attilio/vmobj-rwlock/sys/ufs/ffs/ffs_rawread.c	Wed Feb 20 10:38:34 2013	(r247021)
@@ -42,6 +42,7 @@ __FBSDID("$FreeBSD$");
 #include <sys/ttycom.h>
 #include <sys/bio.h>
 #include <sys/buf.h>
+#include <sys/rwlock.h>
 #include <ufs/ufs/extattr.h>
 #include <ufs/ufs/quota.h>
 #include <ufs/ufs/inode.h>

Modified: user/attilio/vmobj-rwlock/sys/ufs/ffs/ffs_vnops.c
==============================================================================
--- user/attilio/vmobj-rwlock/sys/ufs/ffs/ffs_vnops.c	Wed Feb 20 06:48:39 2013	(r247020)
+++ user/attilio/vmobj-rwlock/sys/ufs/ffs/ffs_vnops.c	Wed Feb 20 10:38:34 2013	(r247021)
@@ -75,6 +75,7 @@ __FBSDID("$FreeBSD$");
 #include <sys/malloc.h>
 #include <sys/mount.h>
 #include <sys/priv.h>
+#include <sys/rwlock.h>
 #include <sys/stat.h>
 #include <sys/vmmeter.h>
 #include <sys/vnode.h>

Modified: user/attilio/vmobj-rwlock/sys/vm/default_pager.c
==============================================================================
--- user/attilio/vmobj-rwlock/sys/vm/default_pager.c	Wed Feb 20 06:48:39 2013	(r247020)
+++ user/attilio/vmobj-rwlock/sys/vm/default_pager.c	Wed Feb 20 10:38:34 2013	(r247021)
@@ -45,7 +45,7 @@ __FBSDID("$FreeBSD$");
 #include <sys/lock.h>
 #include <sys/proc.h>
 #include <sys/resourcevar.h>
-#include <sys/mutex.h>
+#include <sys/rwlock.h>
 
 #include <vm/vm.h>
 #include <vm/vm_object.h>

Modified: user/attilio/vmobj-rwlock/sys/vm/device_pager.c
==============================================================================
--- user/attilio/vmobj-rwlock/sys/vm/device_pager.c	Wed Feb 20 06:48:39 2013	(r247020)
+++ user/attilio/vmobj-rwlock/sys/vm/device_pager.c	Wed Feb 20 10:38:34 2013	(r247021)
@@ -44,6 +44,7 @@ __FBSDID("$FreeBSD$");
 #include <sys/proc.h>
 #include <sys/mutex.h>
 #include <sys/mman.h>
+#include <sys/rwlock.h>
 #include <sys/sx.h>
 
 #include <vm/vm.h>
@@ -206,7 +207,7 @@ void
 cdev_pager_free_page(vm_object_t object, vm_page_t m)
 {
 
-	VM_OBJECT_LOCK_ASSERT(object, MA_OWNED);
+	VM_OBJECT_LOCK_ASSERT(object, RA_WLOCKED);
 	if (object->type == OBJT_MGTDEVICE) {
 		KASSERT((m->oflags & VPO_UNMANAGED) == 0, ("unmanaged %p", m));
 		pmap_remove_all(m);
@@ -221,7 +222,7 @@ static void
 dev_pager_free_page(vm_object_t object, vm_page_t m)
 {
 
-	VM_OBJECT_LOCK_ASSERT(object, MA_OWNED);
+	VM_OBJECT_LOCK_ASSERT(object, RA_WLOCKED);
 	KASSERT((object->type == OBJT_DEVICE &&
 	    (m->oflags & VPO_UNMANAGED) != 0),
 	    ("Managed device or page obj %p m %p", object, m));
@@ -258,11 +259,11 @@ dev_pager_getpages(vm_object_t object, v
 {
 	int error, i;
 
-	VM_OBJECT_LOCK_ASSERT(object, MA_OWNED);
+	VM_OBJECT_LOCK_ASSERT(object, RA_WLOCKED);
 	error = object->un_pager.devp.ops->cdev_pg_fault(object,
 	    IDX_TO_OFF(ma[reqpage]->pindex), PROT_READ, &ma[reqpage]);
 
-	VM_OBJECT_LOCK_ASSERT(object, MA_OWNED);
+	VM_OBJECT_LOCK_ASSERT(object, RA_WLOCKED);
 
 	for (i = 0; i < count; i++) {
 		if (i != reqpage) {

*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***


More information about the svn-src-user mailing list