diff options
author | alc <alc@FreeBSD.org> | 2007-03-23 06:11:25 +0000 |
---|---|---|
committer | alc <alc@FreeBSD.org> | 2007-03-23 06:11:25 +0000 |
commit | 584a9707550322b0320a4e12ec48d54d96451376 (patch) | |
tree | 2cbfb428d905f15f76e084ec17e9c3bac8dacca3 | |
parent | a1325e04bab8daf2ca1b3f6dc2d9ed6eef96f5f3 (diff) | |
download | FreeBSD-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.
-rw-r--r-- | sys/vm/vm_fault.c | 4 |
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); |