diff options
Diffstat (limited to 'mm/quicklist.c')
| -rw-r--r-- | mm/quicklist.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/mm/quicklist.c b/mm/quicklist.c index 3f703f7cb39..94221297052 100644 --- a/mm/quicklist.c +++ b/mm/quicklist.c @@ -14,19 +14,21 @@ */ #include <linux/kernel.h> +#include <linux/gfp.h> #include <linux/mm.h> #include <linux/mmzone.h> -#include <linux/module.h> #include <linux/quicklist.h> -DEFINE_PER_CPU(struct quicklist, quicklist)[CONFIG_NR_QUICK]; +DEFINE_PER_CPU(struct quicklist [CONFIG_NR_QUICK], quicklist); #define FRACTION_OF_NODE_MEM 16 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; node_free_pages = #ifdef CONFIG_ZONE_DMA @@ -38,6 +40,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 = cpumask_weight(cpumask_of_node(node)); + max /= num_cpus_on_node; + return max(max, min_pages); } |
