summaryrefslogtreecommitdiffstats
path: root/sys/vm
diff options
context:
space:
mode:
authoralc <alc@FreeBSD.org>2007-03-23 06:11:25 +0000
committeralc <alc@FreeBSD.org>2007-03-23 06:11:25 +0000
commit584a9707550322b0320a4e12ec48d54d96451376 (patch)
tree2cbfb428d905f15f76e084ec17e9c3bac8dacca3 /sys/vm
parenta1325e04bab8daf2ca1b3f6dc2d9ed6eef96f5f3 (diff)
downloadFreeBSD-src-584a9707550322b0320a4e12ec48d54d96451376.zip
FreeBSD-src-584a9707550322b0320a4e12ec48d54d96451376.tar.gz
vm_page_busy() no longer requires the page queues lock to be held. Reduce
the scope of the page queues lock in vm_fault() accordingly.
Diffstat (limited to 'sys/vm')
-rw-r--r--sys/vm/vm_fault.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/sys/vm/vm_fault.c b/sys/vm/vm_fault.c
index f56a4b6..4b699c2 100644
--- a/sys/vm/vm_fault.c
+++ b/sys/vm/vm_fault.c
@@ -410,6 +410,7 @@ RetryFault:;
VM_WAITPFAULT;
goto RetryFault;
}
+ vm_page_unlock_queues();
/*
* Mark page busy for other processes, and the
@@ -418,7 +419,6 @@ RetryFault:;
* found the page ).
*/
vm_page_busy(fs.m);
- vm_page_unlock_queues();
if (((fs.m->valid & VM_PAGE_BITS_ALL) != VM_PAGE_BITS_ALL) &&
fs.m->object != kernel_object && fs.m->object != kmem_object) {
goto readrest;
@@ -748,8 +748,8 @@ readrest:
* automatically made dirty.
*/
vm_page_rename(fs.m, fs.first_object, fs.first_pindex);
- vm_page_busy(fs.m);
vm_page_unlock_queues();
+ vm_page_busy(fs.m);
fs.first_m = fs.m;
fs.m = NULL;
PCPU_LAZY_INC(cnt.v_cow_optim);
OpenPOWER on IntegriCloud