svn commit: r250789 - user/attilio/vmobj-readlock/sys/vm

Attilio Rao attilio at FreeBSD.org
Sat May 18 22:16:42 UTC 2013


Author: attilio
Date: Sat May 18 22:16:42 2013
New Revision: 250789
URL: http://svnweb.freebsd.org/changeset/base/250789

Log:
  Switch vm_fault_copy_entry() locking for read-in pages.
  
  Sponsored by:	EMC / Isilon storage division

Modified:
  user/attilio/vmobj-readlock/sys/vm/vm_fault.c

Modified: user/attilio/vmobj-readlock/sys/vm/vm_fault.c
==============================================================================
--- user/attilio/vmobj-readlock/sys/vm/vm_fault.c	Sat May 18 19:30:42 2013	(r250788)
+++ user/attilio/vmobj-readlock/sys/vm/vm_fault.c	Sat May 18 22:16:42 2013	(r250789)
@@ -1320,7 +1320,7 @@ vm_fault_copy_entry(vm_map_t dst_map, vm
 		 * (Because the source is wired down, the page will be in
 		 * memory.)
 		 */
-		VM_OBJECT_WLOCK(src_object);
+		VM_OBJECT_RLOCK(src_object);
 		object = src_object;
 		pindex = src_pindex + dst_pindex;
 		while ((src_m = vm_page_lookup(object, pindex)) == NULL &&
@@ -1329,15 +1329,15 @@ vm_fault_copy_entry(vm_map_t dst_map, vm
 			/*
 			 * Allow fallback to backing objects if we are reading.
 			 */
-			VM_OBJECT_WLOCK(backing_object);
+			VM_OBJECT_RLOCK(backing_object);
 			pindex += OFF_TO_IDX(object->backing_object_offset);
-			VM_OBJECT_WUNLOCK(object);
+			VM_OBJECT_RUNLOCK(object);
 			object = backing_object;
 		}
 		if (src_m == NULL)
 			panic("vm_fault_copy_wired: page missing");
 		pmap_copy_page(src_m, dst_m);
-		VM_OBJECT_WUNLOCK(object);
+		VM_OBJECT_RUNLOCK(object);
 		dst_m->valid = VM_PAGE_BITS_ALL;
 		dst_m->dirty = VM_PAGE_BITS_ALL;
 		VM_OBJECT_WUNLOCK(dst_object);


More information about the svn-src-user mailing list