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

Attilio Rao attilio at FreeBSD.org
Thu May 23 14:31:43 UTC 2013


Author: attilio
Date: Thu May 23 14:31:42 2013
New Revision: 250932
URL: http://svnweb.freebsd.org/changeset/base/250932

Log:
  Bring back vm_page_sleep_if_busy() to a single hard-call.
  
  Sponsored by:	EMC / Isilon storage division

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

Modified: user/attilio/vmobj-readlock/sys/vm/vm_page.c
==============================================================================
--- user/attilio/vmobj-readlock/sys/vm/vm_page.c	Thu May 23 12:24:46 2013	(r250931)
+++ user/attilio/vmobj-readlock/sys/vm/vm_page.c	Thu May 23 14:31:42 2013	(r250932)
@@ -764,6 +764,22 @@ vm_page_readahead_finish(vm_page_t m)
 }
 
 /*
+ *	_vm_page_sleep_onpage:
+ *
+ *	Sleep and release the page lock, using the page pointer as wchan.
+ *
+ *	The given page must be locked.
+ */
+static inline int
+_vm_page_sleep_onpage(vm_page_t m, int pri, const char *wmesg, int  timo)
+{
+
+	vm_page_lock_assert(m, MA_OWNED);
+	m->flags |= PG_WANTED;
+	return (msleep(m, vm_page_lockptr(m), pri | PDROP, wmesg, timo));
+}
+
+/*
  *	vm_page_sleep_if_busy:
  *
  *	Sleep and release the page queues lock if VPO_BUSY is set or,
@@ -789,7 +805,7 @@ vm_page_sleep_if_busy(vm_page_t m, int a
 		 */
 		obj = m->object;
 		VM_OBJECT_WUNLOCK(obj);
-		vm_page_sleep(m, msg);
+		_vm_page_sleep_onpage(m, PVM, msg, 0);
 		VM_OBJECT_WLOCK(obj);
 		return (TRUE);
 	}
@@ -799,17 +815,15 @@ vm_page_sleep_if_busy(vm_page_t m, int a
 /*
  *	vm_page_sleep_onpage:
  *
- *	Sleep and release the page lock, using the page pointer as wchan.
+ *	External version of _vm_page_sleep_onpage().
  *
- *	The given page must be locked.
+ *	Check the inline version for comments.
  */
 int
 vm_page_sleep_onpage(vm_page_t m, int pri, const char *wmesg, int  timo)
 {
 
-	vm_page_lock_assert(m, MA_OWNED);
-	m->flags |= PG_WANTED;
-	return (msleep(m, vm_page_lockptr(m), pri | PDROP, wmesg, timo));
+	return (_vm_page_sleep_onpage(m, pri, wmesg, timo));
 }
 
 /*


More information about the svn-src-user mailing list