From 5d9c66a3f8fe76b65b02406c551668f4b645abf5 Mon Sep 17 00:00:00 2001 From: alc Date: Sun, 22 Oct 2006 21:18:48 +0000 Subject: The page queues lock is no longer required by vm_page_busy() or vm_page_wakeup(). Reduce or eliminate its use accordingly. --- sys/vm/vm_object.c | 2 -- sys/vm/vm_page.c | 7 ++++--- 2 files changed, 4 insertions(+), 5 deletions(-) (limited to 'sys/vm') diff --git a/sys/vm/vm_object.c b/sys/vm/vm_object.c index c86a2bb..472f254 100644 --- a/sys/vm/vm_object.c +++ b/sys/vm/vm_object.c @@ -1364,10 +1364,8 @@ vm_object_split(vm_map_entry_t entry) swap_pager_copy(orig_object, new_object, offidxstart, 0); } VM_OBJECT_UNLOCK(orig_object); - vm_page_lock_queues(); TAILQ_FOREACH(m, &new_object->memq, listq) vm_page_wakeup(m); - vm_page_unlock_queues(); VM_OBJECT_UNLOCK(new_object); entry->object.vm_object = new_object; entry->offset = 0LL; diff --git a/sys/vm/vm_page.c b/sys/vm/vm_page.c index 0c971c5..c191d60 100644 --- a/sys/vm/vm_page.c +++ b/sys/vm/vm_page.c @@ -1472,12 +1472,13 @@ retrylookup: return (NULL); goto retrylookup; } else { - vm_page_lock_queues(); - if (allocflags & VM_ALLOC_WIRED) + if ((allocflags & VM_ALLOC_WIRED) != 0) { + vm_page_lock_queues(); vm_page_wire(m); + vm_page_unlock_queues(); + } if ((allocflags & VM_ALLOC_NOBUSY) == 0) vm_page_busy(m); - vm_page_unlock_queues(); return (m); } } -- cgit v1.1