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-all
mailing list