From a423701f7f891ba541d13dec0568538817bbd3d7 Mon Sep 17 00:00:00 2001 From: KOSAKI Motohiro Date: Tue, 2 Sep 2008 14:35:58 -0700 Subject: [PATCH] --- yaml --- r: 109415 b: refs/heads/master c: b954185214c3b562c3fcc651e9ec69d421d76bfa h: refs/heads/master i: 109413: eb8bdd197f74c95d40bb26bae45122070d0e4903 109411: 4eeff966838646f87fbb725da5efe9241209715a 109407: edd50a9cb9d403e437850d67b6a2794e8eba083c v: v3 --- [refs] | 2 +- trunk/mm/quicklist.c | 9 ++++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index 71106605a6d5..a644c3fd6922 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 4b8561521dbaa3d766b198496b220e984e3bf756 +refs/heads/master: b954185214c3b562c3fcc651e9ec69d421d76bfa diff --git a/trunk/mm/quicklist.c b/trunk/mm/quicklist.c index 3f703f7cb398..8dbb6805ef35 100644 --- a/trunk/mm/quicklist.c +++ b/trunk/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; + node_to_cpumask_ptr(cpumask_on_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); }