diff options
author | alc <alc@FreeBSD.org> | 2003-08-21 20:59:07 +0000 |
---|---|---|
committer | alc <alc@FreeBSD.org> | 2003-08-21 20:59:07 +0000 |
commit | 9e89497b7d64807c72db35dac20c7e2738e4c343 (patch) | |
tree | d84def42c2496276819e4f26155fd6d25b551562 /sys/vm/vm_page.c | |
parent | 1bb35f7e47abbe19da3b78380d04d1d187229e0a (diff) | |
download | FreeBSD-src-9e89497b7d64807c72db35dac20c7e2738e4c343.zip FreeBSD-src-9e89497b7d64807c72db35dac20c7e2738e4c343.tar.gz |
Assert that the vm object's lock is held on entry to vm_page_grab(); remove
code from this function that was needed when vm object locking was
incomplete.
Diffstat (limited to 'sys/vm/vm_page.c')
-rw-r--r-- | sys/vm/vm_page.c | 20 |
1 files changed, 6 insertions, 14 deletions
diff --git a/sys/vm/vm_page.c b/sys/vm/vm_page.c index 3077e37..76a4280 100644 --- a/sys/vm/vm_page.c +++ b/sys/vm/vm_page.c @@ -1437,13 +1437,9 @@ vm_page_t vm_page_grab(vm_object_t object, vm_pindex_t pindex, int allocflags) { vm_page_t m; - int s, generation, is_object_locked; + int s, generation; - /* - * Remove is_object_locked after vm_object locking is finished. - */ - if (!(is_object_locked = VM_OBJECT_LOCKED(object))) - GIANT_REQUIRED; + VM_OBJECT_LOCK_ASSERT(object, MA_OWNED); retrylookup: if ((m = vm_page_lookup(object, pindex)) != NULL) { vm_page_lock_queues(); @@ -1454,11 +1450,9 @@ retrylookup: while ((object->generation == generation) && (m->busy || (m->flags & PG_BUSY))) { vm_page_flag_set(m, PG_WANTED | PG_REFERENCED); - if (is_object_locked) - VM_OBJECT_UNLOCK(object); + VM_OBJECT_UNLOCK(object); msleep(m, &vm_page_queue_mtx, PDROP | PVM, "pgrbwt", 0); - if (is_object_locked) - VM_OBJECT_LOCK(object); + VM_OBJECT_LOCK(object); if ((allocflags & VM_ALLOC_RETRY) == 0) { splx(s); return NULL; @@ -1479,11 +1473,9 @@ retrylookup: m = vm_page_alloc(object, pindex, allocflags & ~VM_ALLOC_RETRY); if (m == NULL) { - if (is_object_locked) - VM_OBJECT_UNLOCK(object); + VM_OBJECT_UNLOCK(object); VM_WAIT; - if (is_object_locked) - VM_OBJECT_LOCK(object); + VM_OBJECT_LOCK(object); if ((allocflags & VM_ALLOC_RETRY) == 0) return NULL; goto retrylookup; |