Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=74c7aa8b8581e0ba8d6d17c623b9279aaabbb0cf
Commit:     74c7aa8b8581e0ba8d6d17c623b9279aaabbb0cf
Parent:     5ec553a90448b3edbd26c1acc72464f877614bfa
Author:     Christoph Lameter <[EMAIL PROTECTED]>
AuthorDate: Tue Feb 20 13:57:51 2007 -0800
Committer:  Linus Torvalds <[EMAIL PROTECTED]>
CommitDate: Tue Feb 20 17:10:13 2007 -0800

    [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.
    
    [EMAIL PROTECTED]: fix oops]
    Signed-off-by: Christoph Lameter <[EMAIL PROTECTED]>
    Cc: Neil Brown <[EMAIL PROTECTED]>
    Cc: Trond Myklebust <[EMAIL PROTECTED]>
    Signed-off-by: Frederik Deweerdt <[EMAIL PROTECTED]>
    Signed-off-by: Andrew Morton <[EMAIL PROTECTED]>
    Signed-off-by: Linus Torvalds <[EMAIL PROTECTED]>
---
 include/linux/nodemask.h |    4 ++--
 mm/page_alloc.c          |   35 +++++++++++++++++++++--------------
 net/sunrpc/svc.c         |    4 ++--
 3 files changed, 25 insertions(+), 18 deletions(-)

diff --git a/include/linux/nodemask.h b/include/linux/nodemask.h
index b1063e9..52c54a5 100644
--- a/include/linux/nodemask.h
+++ b/include/linux/nodemask.h
@@ -352,7 +352,7 @@ extern nodemask_t node_possible_map;
 #define node_possible(node)    node_isset((node), node_possible_map)
 #define first_online_node      first_node(node_online_map)
 #define next_online_node(nid)  next_node((nid), node_online_map)
-int highest_possible_node_id(void);
+extern int nr_node_ids;
 #else
 #define num_online_nodes()     1
 #define num_possible_nodes()   1
@@ -360,7 +360,7 @@ int highest_possible_node_id(void);
 #define node_possible(node)    ((node) == 0)
 #define first_online_node      0
 #define next_online_node(nid)  (MAX_NUMNODES)
-#define highest_possible_node_id()     0
+#define nr_node_ids            1
 #endif
 
 #define any_online_node(mask)                  \
diff --git a/mm/page_alloc.c b/mm/page_alloc.c
index d461b23..f66538b 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,
        return i;
 }
 
+#if MAX_NUMNODES > 1
+int nr_node_ids __read_mostly;
+EXPORT_SYMBOL(nr_node_ids);
+
+/*
+ * Figure out the number of possible node ids.
+ */
+static void __init setup_nr_node_ids(void)
+{
+       unsigned int node;
+       unsigned int highest = 0;
+
+       for_each_node_mask(node, node_possible_map)
+               highest = node;
+       nr_node_ids = highest + 1;
+}
+#else
+static void __init setup_nr_node_ids(void) {}
+#endif
+
 #ifdef CONFIG_NUMA
 /*
  * 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)
                min_free_kbytes = 65536;
        setup_per_zone_pages_min();
        setup_per_zone_lowmem_reserve();
+       setup_nr_node_ids();
        return 0;
 }
 module_init(init_per_zone_pages_min)
@@ -3370,18 +3391,4 @@ EXPORT_SYMBOL(pfn_to_page);
 EXPORT_SYMBOL(page_to_pfn);
 #endif /* CONFIG_OUT_OF_LINE_PFN_TO_PAGE */
 
-#if MAX_NUMNODES > 1
-/*
- * Find the highest possible node id.
- */
-int highest_possible_node_id(void)
-{
-       unsigned int node;
-       unsigned int highest = 0;
 
-       for_each_node_mask(node, node_possible_map)
-               highest = node;
-       return highest;
-}
-EXPORT_SYMBOL(highest_possible_node_id);
-#endif
diff --git a/net/sunrpc/svc.c b/net/sunrpc/svc.c
index 4ab1374..232a997 100644
--- a/net/sunrpc/svc.c
+++ b/net/sunrpc/svc.c
@@ -115,7 +115,7 @@ fail:
 static int
 svc_pool_map_init_percpu(struct svc_pool_map *m)
 {
-       unsigned int maxpools = highest_possible_processor_id()+1;
+       unsigned int maxpools = highest_possible_processor_id() + 1;
        unsigned int pidx = 0;
        unsigned int cpu;
        int err;
@@ -143,7 +143,7 @@ svc_pool_map_init_percpu(struct svc_pool_map *m)
 static int
 svc_pool_map_init_pernode(struct svc_pool_map *m)
 {
-       unsigned int maxpools = highest_possible_node_id()+1;
+       unsigned int maxpools = nr_node_ids;
        unsigned int pidx = 0;
        unsigned int node;
        int err;
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to