diff options
author | Christoph Lameter <clameter@sgi.com> | 2007-02-20 16:57:51 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-02-20 20:10:13 -0500 |
commit | 74c7aa8b8581e0ba8d6d17c623b9279aaabbb0cf (patch) | |
tree | e8bfdd1d4bd5a7d4ee0e0bbf83c45c9f2b5deb59 /mm | |
parent | 5ec553a90448b3edbd26c1acc72464f877614bfa (diff) |
[PATCH] Replace highest_possible_node_id() with nr_node_ids
highest_possible_node_id() is currently used to calculate the last possible
node idso that the network subsystem can figure out how to size per node
arrays.
I think having the ability to determine the maximum amount of nodes in a
system at runtime is useful but then we should name this entry
correspondingly, it should return the number of node_ids, and the the value
needs to be setup only once on bootup. The node_possible_map does not
change after bootup.
This patch introduces nr_node_ids and replaces the use of
highest_possible_node_id(). nr_node_ids is calculated on bootup when the
page allocators pagesets are initialized.
[deweerdt@free.fr: fix oops]
Signed-off-by: Christoph Lameter <clameter@sgi.com>
Cc: Neil Brown <neilb@suse.de>
Cc: Trond Myklebust <trond.myklebust@fys.uio.no>
Signed-off-by: Frederik Deweerdt <frederik.deweerdt@gmail.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'mm')
-rw-r--r-- | mm/page_alloc.c | 35 |
1 files changed, 21 insertions, 14 deletions
diff --git a/mm/page_alloc.c b/mm/page_alloc.c index d461b23a27a1..f66538b3c31b 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c | |||
@@ -664,6 +664,26 @@ static int rmqueue_bulk(struct zone *zone, unsigned int order, | |||
664 | return i; | 664 | return i; |
665 | } | 665 | } |
666 | 666 | ||
667 | #if MAX_NUMNODES > 1 | ||
668 | int nr_node_ids __read_mostly; | ||
669 | EXPORT_SYMBOL(nr_node_ids); | ||
670 | |||
671 | /* | ||
672 | * Figure out the number of possible node ids. | ||
673 | */ | ||
674 | static void __init setup_nr_node_ids(void) | ||
675 | { | ||
676 | unsigned int node; | ||
677 | unsigned int highest = 0; | ||
678 | |||
679 | for_each_node_mask(node, node_possible_map) | ||
680 | highest = node; | ||
681 | nr_node_ids = highest + 1; | ||
682 | } | ||
683 | #else | ||
684 | static void __init setup_nr_node_ids(void) {} | ||
685 | #endif | ||
686 | |||
667 | #ifdef CONFIG_NUMA | 687 | #ifdef CONFIG_NUMA |
668 | /* | 688 | /* |
669 | * Called from the slab reaper to drain pagesets on a particular node that | 689 | * Called from the slab reaper to drain pagesets on a particular node that |
@@ -3169,6 +3189,7 @@ static int __init init_per_zone_pages_min(void) | |||
3169 | min_free_kbytes = 65536; | 3189 | min_free_kbytes = 65536; |
3170 | setup_per_zone_pages_min(); | 3190 | setup_per_zone_pages_min(); |
3171 | setup_per_zone_lowmem_reserve(); | 3191 | setup_per_zone_lowmem_reserve(); |
3192 | setup_nr_node_ids(); | ||
3172 | return 0; | 3193 | return 0; |
3173 | } | 3194 | } |
3174 | module_init(init_per_zone_pages_min) | 3195 | module_init(init_per_zone_pages_min) |
@@ -3370,18 +3391,4 @@ EXPORT_SYMBOL(pfn_to_page); | |||
3370 | EXPORT_SYMBOL(page_to_pfn); | 3391 | EXPORT_SYMBOL(page_to_pfn); |
3371 | #endif /* CONFIG_OUT_OF_LINE_PFN_TO_PAGE */ | 3392 | #endif /* CONFIG_OUT_OF_LINE_PFN_TO_PAGE */ |
3372 | 3393 | ||
3373 | #if MAX_NUMNODES > 1 | ||
3374 | /* | ||
3375 | * Find the highest possible node id. | ||
3376 | */ | ||
3377 | int highest_possible_node_id(void) | ||
3378 | { | ||
3379 | unsigned int node; | ||
3380 | unsigned int highest = 0; | ||
3381 | 3394 | ||
3382 | for_each_node_mask(node, node_possible_map) | ||
3383 | highest = node; | ||
3384 | return highest; | ||
3385 | } | ||
3386 | EXPORT_SYMBOL(highest_possible_node_id); | ||
3387 | #endif | ||