svn commit: r247223 - user/attilio/vmc-playground/sys/vm

Attilio Rao attilio at FreeBSD.org
Sun Feb 24 16:10:43 UTC 2013


Author: attilio
Date: Sun Feb 24 16:10:43 2013
New Revision: 247223
URL: http://svnweb.freebsd.org/changeset/base/247223

Log:
  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

Modified:
  user/attilio/vmc-playground/sys/vm/vm_reserv.c

Modified: user/attilio/vmc-playground/sys/vm/vm_reserv.c
==============================================================================
--- user/attilio/vmc-playground/sys/vm/vm_reserv.c	Sun Feb 24 16:08:37 2013	(r247222)
+++ user/attilio/vmc-playground/sys/vm/vm_reserv.c	Sun Feb 24 16:10:43 2013	(r247223)
@@ -349,8 +349,9 @@ vm_reserv_alloc_contig(vm_object_t objec
 		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,
 		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"));


More information about the svn-src-user mailing list