X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;f=mm%2Fquicklist.c;h=e66d07d1b4ff424b108c0bd111e2092f217aede0;hb=e858e8b07666e96c7206f3c42d233340156ebf0a;hp=3f703f7cb398056547af212577909a3d6c46b116;hpb=c64768a7d671bcde80bca2aed93f9e07edc069c3;p=~andy%2Flinux diff --git a/mm/quicklist.c b/mm/quicklist.c index 3f703f7cb39..e66d07d1b4f 100644 --- a/mm/quicklist.c +++ b/mm/quicklist.c @@ -26,7 +26,10 @@ DEFINE_PER_CPU(struct quicklist, quicklist)[CONFIG_NR_QUICK]; static unsigned long max_pages(unsigned long min_pages) { unsigned long node_free_pages, max; - struct zone *zones = NODE_DATA(numa_node_id())->node_zones; + int node = numa_node_id(); + struct zone *zones = NODE_DATA(node)->node_zones; + int num_cpus_on_node; + const struct cpumask *cpumask_on_node = cpumask_of_node(node); node_free_pages = #ifdef CONFIG_ZONE_DMA @@ -38,6 +41,10 @@ static unsigned long max_pages(unsigned long min_pages) zone_page_state(&zones[ZONE_NORMAL], NR_FREE_PAGES); max = node_free_pages / FRACTION_OF_NODE_MEM; + + num_cpus_on_node = cpus_weight_nr(*cpumask_on_node); + max /= num_cpus_on_node; + return max(max, min_pages); }