summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authorattilio <attilio@FreeBSD.org>2013-02-24 16:10:43 +0000
committerattilio <attilio@FreeBSD.org>2013-02-24 16:10:43 +0000
commit6b1291b4d1f698048c27a58ed4ac41557801cf6d (patch)
tree006eeaa2a0b955967cad1eb414cdb24c26e09bec /sys
parentf6d331e8040eae45579f93dce65e9ec6d9a34561 (diff)
downloadFreeBSD-src-6b1291b4d1f698048c27a58ed4ac41557801cf6d.zip
FreeBSD-src-6b1291b4d1f698048c27a58ed4ac41557801cf6d.tar.gz
Do not call vm_radix_lookup_ge() in the reservation system unless
it is absolutely necessary. Sponsored by: EMC / Isilon storage division Submitted by: alc
Diffstat (limited to 'sys')
-rw-r--r--sys/vm/vm_reserv.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/sys/vm/vm_reserv.c b/sys/vm/vm_reserv.c
index e2ec77f..eb14411 100644
--- a/sys/vm/vm_reserv.c
+++ b/sys/vm/vm_reserv.c
@@ -349,8 +349,9 @@ vm_reserv_alloc_contig(vm_object_t object, vm_pindex_t pindex, u_long npages,
rv = vm_reserv_from_page(mpred);
if (rv->object == object && vm_reserv_has_pindex(rv, pindex))
goto found;
- }
- msucc = vm_radix_lookup_ge(&object->rtree, pindex);
+ msucc = TAILQ_NEXT(mpred, listq);
+ } else
+ msucc = vm_radix_lookup_ge(&object->rtree, pindex);
if (msucc != NULL) {
KASSERT(msucc->pindex > pindex,
("vm_reserv_alloc_page: pindex already allocated"));
@@ -503,8 +504,9 @@ vm_reserv_alloc_page(vm_object_t object, vm_pindex_t pindex)
rv = vm_reserv_from_page(mpred);
if (rv->object == object && vm_reserv_has_pindex(rv, pindex))
goto found;
- }
- msucc = vm_radix_lookup_ge(&object->rtree, pindex);
+ msucc = TAILQ_NEXT(mpred, listq);
+ } else
+ msucc = vm_radix_lookup_ge(&object->rtree, pindex);
if (msucc != NULL) {
KASSERT(msucc->pindex > pindex,
("vm_reserv_alloc_page: pindex already allocated"));
OpenPOWER on IntegriCloud