diff options
-rw-r--r-- | sys/vm/vm_reserv.c | 10 |
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")); |