svn commit: r234038 - head/sys/vm

Alan Cox alc at FreeBSD.org
Sun Apr 8 17:00:46 UTC 2012


Author: alc
Date: Sun Apr  8 17:00:46 2012
New Revision: 234038
URL: http://svn.freebsd.org/changeset/base/234038

Log:
  If a page belonging a reservation is cached, then mark the reservation so
  that it will be freed to the cache pool rather than the default pool.
  Otherwise, the cached pages within the reservation may be recycled sooner
  than necessary.
  
  Reported by:	Andrey Zonov

Modified:
  head/sys/vm/vm_reserv.c

Modified: head/sys/vm/vm_reserv.c
==============================================================================
--- head/sys/vm/vm_reserv.c	Sun Apr  8 16:26:26 2012	(r234037)
+++ head/sys/vm/vm_reserv.c	Sun Apr  8 17:00:46 2012	(r234038)
@@ -652,11 +652,13 @@ vm_reserv_free_page(vm_page_t m)
 
 	mtx_assert(&vm_page_queue_free_mtx, MA_OWNED);
 	rv = vm_reserv_from_page(m);
-	if (rv->object != NULL) {
-		vm_reserv_depopulate(rv);
-		return (TRUE);
-	}
-	return (FALSE);
+	if (rv->object == NULL)
+		return (FALSE);
+	if ((m->flags & PG_CACHED) != 0 && m->pool != VM_FREEPOOL_CACHE)
+		vm_phys_set_pool(VM_FREEPOOL_CACHE, rv->pages,
+		    VM_LEVEL_0_ORDER);
+	vm_reserv_depopulate(rv);
+	return (TRUE);
 }
 
 /*


More information about the svn-src-head mailing list