From 86e3f5101f74c9ab6e2082b6159e00042b34b733 Mon Sep 17 00:00:00 2001 From: alc Date: Fri, 2 Aug 2002 18:55:29 +0000 Subject: o Convert two instances of vm_page_sleep_busy() into vm_page_sleep_if_busy() with appropriate page queue locking. --- sys/vm/vm_object.c | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) (limited to 'sys/vm') diff --git a/sys/vm/vm_object.c b/sys/vm/vm_object.c index 7f6a788..a4353d9 100644 --- a/sys/vm/vm_object.c +++ b/sys/vm/vm_object.c @@ -1260,10 +1260,12 @@ vm_object_split(vm_map_entry_t entry) * We do not have to VM_PROT_NONE the page as mappings should * not be changed by this operation. */ - if (vm_page_sleep_busy(m, TRUE, "spltwt")) + vm_page_lock_queues(); + if (vm_page_sleep_if_busy(m, TRUE, "spltwt")) goto retry; vm_page_busy(m); + vm_page_unlock_queues(); vm_page_rename(m, new_object, idx); /* page automatically made dirty by rename and cache handled */ vm_page_busy(m); @@ -1379,19 +1381,19 @@ vm_object_backing_scan(vm_object_t object, int op) if (op & (OBSC_COLLAPSE_WAIT | OBSC_COLLAPSE_NOWAIT)) { vm_page_t pp; + vm_page_lock_queues(); if (op & OBSC_COLLAPSE_NOWAIT) { - if ( - (p->flags & PG_BUSY) || + if ((p->flags & PG_BUSY) || !p->valid || p->hold_count || p->wire_count || - p->busy - ) { + p->busy) { + vm_page_unlock_queues(); p = next; continue; } } else if (op & OBSC_COLLAPSE_WAIT) { - if (vm_page_sleep_busy(p, TRUE, "vmocol")) { + if (vm_page_sleep_if_busy(p, TRUE, "vmocol")) { /* * If we slept, anything could have * happened. Since the object is @@ -1408,6 +1410,7 @@ vm_object_backing_scan(vm_object_t object, int op) * Busy the page */ vm_page_busy(p); + vm_page_unlock_queues(); KASSERT( p->object == backing_object, -- cgit v1.1