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