svn commit: r249605 - head/sys/vm
Alan Cox
alc at FreeBSD.org
Thu Apr 18 05:34:33 UTC 2013
Author: alc
Date: Thu Apr 18 05:34:33 2013
New Revision: 249605
URL: http://svnweb.freebsd.org/changeset/base/249605
Log:
When calculating the number of reserved nodes, discount the pages that will
be used to store the nodes.
Sponsored by: EMC / Isilon Storage Division
Modified:
head/sys/vm/vm_radix.c
Modified: head/sys/vm/vm_radix.c
==============================================================================
--- head/sys/vm/vm_radix.c Thu Apr 18 05:12:11 2013 (r249604)
+++ head/sys/vm/vm_radix.c Thu Apr 18 05:34:33 2013 (r249605)
@@ -360,10 +360,17 @@ vm_radix_node_zone_init(void *mem, int s
static void
vm_radix_prealloc(void *arg __unused)
{
+ int nodes;
- if (!uma_zone_reserve_kva(vm_radix_node_zone, cnt.v_page_count))
+ /*
+ * Calculate the number of reserved nodes, discounting the pages that
+ * are needed to store them.
+ */
+ nodes = ((vm_paddr_t)cnt.v_page_count * PAGE_SIZE) / (PAGE_SIZE +
+ sizeof(struct vm_radix_node));
+ if (!uma_zone_reserve_kva(vm_radix_node_zone, nodes))
panic("%s: unable to create new zone", __func__);
- uma_prealloc(vm_radix_node_zone, cnt.v_page_count);
+ uma_prealloc(vm_radix_node_zone, nodes);
}
SYSINIT(vm_radix_prealloc, SI_SUB_KMEM, SI_ORDER_SECOND, vm_radix_prealloc,
NULL);
More information about the svn-src-all
mailing list