aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/linux/nodemask.h19
-rw-r--r--mm/hugetlb.c4
-rw-r--r--mm/page_alloc.c10
-rw-r--r--mm/slub.c2
-rw-r--r--net/sunrpc/svc.c2
5 files changed, 26 insertions, 11 deletions
diff --git a/include/linux/nodemask.h b/include/linux/nodemask.h
index 848025cd7087..829b94b156f2 100644
--- a/include/linux/nodemask.h
+++ b/include/linux/nodemask.h
@@ -408,6 +408,19 @@ static inline int num_node_state(enum node_states state)
408#define next_online_node(nid) next_node((nid), node_states[N_ONLINE]) 408#define next_online_node(nid) next_node((nid), node_states[N_ONLINE])
409 409
410extern int nr_node_ids; 410extern int nr_node_ids;
411extern int nr_online_nodes;
412
413static inline void node_set_online(int nid)
414{
415 node_set_state(nid, N_ONLINE);
416 nr_online_nodes = num_node_state(N_ONLINE);
417}
418
419static inline void node_set_offline(int nid)
420{
421 node_clear_state(nid, N_ONLINE);
422 nr_online_nodes = num_node_state(N_ONLINE);
423}
411#else 424#else
412 425
413static inline int node_state(int node, enum node_states state) 426static inline int node_state(int node, enum node_states state)
@@ -434,7 +447,10 @@ static inline int num_node_state(enum node_states state)
434#define first_online_node 0 447#define first_online_node 0
435#define next_online_node(nid) (MAX_NUMNODES) 448#define next_online_node(nid) (MAX_NUMNODES)
436#define nr_node_ids 1 449#define nr_node_ids 1
450#define nr_online_nodes 1
437 451
452#define node_set_online(node) node_set_state((node), N_ONLINE)
453#define node_set_offline(node) node_clear_state((node), N_ONLINE)
438#endif 454#endif
439 455
440#define node_online_map node_states[N_ONLINE] 456#define node_online_map node_states[N_ONLINE]
@@ -454,9 +470,6 @@ static inline int num_node_state(enum node_states state)
454#define node_online(node) node_state((node), N_ONLINE) 470#define node_online(node) node_state((node), N_ONLINE)
455#define node_possible(node) node_state((node), N_POSSIBLE) 471#define node_possible(node) node_state((node), N_POSSIBLE)
456 472
457#define node_set_online(node) node_set_state((node), N_ONLINE)
458#define node_set_offline(node) node_clear_state((node), N_ONLINE)
459
460#define for_each_node(node) for_each_node_state(node, N_POSSIBLE) 473#define for_each_node(node) for_each_node_state(node, N_POSSIBLE)
461#define for_each_online_node(node) for_each_node_state(node, N_ONLINE) 474#define for_each_online_node(node) for_each_node_state(node, N_ONLINE)
462 475
diff --git a/mm/hugetlb.c b/mm/hugetlb.c
index 2f8241f300f5..7b9b6015b2ec 100644
--- a/mm/hugetlb.c
+++ b/mm/hugetlb.c
@@ -875,7 +875,7 @@ static void return_unused_surplus_pages(struct hstate *h,
875 * can no longer free unreserved surplus pages. This occurs when 875 * can no longer free unreserved surplus pages. This occurs when
876 * the nodes with surplus pages have no free pages. 876 * the nodes with surplus pages have no free pages.
877 */ 877 */
878 unsigned long remaining_iterations = num_online_nodes(); 878 unsigned long remaining_iterations = nr_online_nodes;
879 879
880 /* Uncommit the reservation */ 880 /* Uncommit the reservation */
881 h->resv_huge_pages -= unused_resv_pages; 881 h->resv_huge_pages -= unused_resv_pages;
@@ -904,7 +904,7 @@ static void return_unused_surplus_pages(struct hstate *h,
904 h->surplus_huge_pages--; 904 h->surplus_huge_pages--;
905 h->surplus_huge_pages_node[nid]--; 905 h->surplus_huge_pages_node[nid]--;
906 nr_pages--; 906 nr_pages--;
907 remaining_iterations = num_online_nodes(); 907 remaining_iterations = nr_online_nodes;
908 } 908 }
909 } 909 }
910} 910}
diff --git a/mm/page_alloc.c b/mm/page_alloc.c
index e60e41474332..0c9f406e3c44 100644
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -161,7 +161,9 @@ static unsigned long __meminitdata dma_reserve;
161 161
162#if MAX_NUMNODES > 1 162#if MAX_NUMNODES > 1
163int nr_node_ids __read_mostly = MAX_NUMNODES; 163int nr_node_ids __read_mostly = MAX_NUMNODES;
164int nr_online_nodes __read_mostly = 1;
164EXPORT_SYMBOL(nr_node_ids); 165EXPORT_SYMBOL(nr_node_ids);
166EXPORT_SYMBOL(nr_online_nodes);
165#endif 167#endif
166 168
167int page_group_by_mobility_disabled __read_mostly; 169int page_group_by_mobility_disabled __read_mostly;
@@ -1466,7 +1468,7 @@ this_zone_full:
1466 if (NUMA_BUILD) 1468 if (NUMA_BUILD)
1467 zlc_mark_zone_full(zonelist, z); 1469 zlc_mark_zone_full(zonelist, z);
1468try_next_zone: 1470try_next_zone:
1469 if (NUMA_BUILD && !did_zlc_setup && num_online_nodes() > 1) { 1471 if (NUMA_BUILD && !did_zlc_setup && nr_online_nodes > 1) {
1470 /* 1472 /*
1471 * we do zlc_setup after the first zone is tried but only 1473 * we do zlc_setup after the first zone is tried but only
1472 * if there are multiple nodes make it worthwhile 1474 * if there are multiple nodes make it worthwhile
@@ -2265,7 +2267,7 @@ int numa_zonelist_order_handler(ctl_table *table, int write,
2265} 2267}
2266 2268
2267 2269
2268#define MAX_NODE_LOAD (num_online_nodes()) 2270#define MAX_NODE_LOAD (nr_online_nodes)
2269static int node_load[MAX_NUMNODES]; 2271static int node_load[MAX_NUMNODES];
2270 2272
2271/** 2273/**
@@ -2474,7 +2476,7 @@ static void build_zonelists(pg_data_t *pgdat)
2474 2476
2475 /* NUMA-aware ordering of nodes */ 2477 /* NUMA-aware ordering of nodes */
2476 local_node = pgdat->node_id; 2478 local_node = pgdat->node_id;
2477 load = num_online_nodes(); 2479 load = nr_online_nodes;
2478 prev_node = local_node; 2480 prev_node = local_node;
2479 nodes_clear(used_mask); 2481 nodes_clear(used_mask);
2480 2482
@@ -2625,7 +2627,7 @@ void build_all_zonelists(void)
2625 2627
2626 printk("Built %i zonelists in %s order, mobility grouping %s. " 2628 printk("Built %i zonelists in %s order, mobility grouping %s. "
2627 "Total pages: %ld\n", 2629 "Total pages: %ld\n",
2628 num_online_nodes(), 2630 nr_online_nodes,
2629 zonelist_order_name[current_zonelist_order], 2631 zonelist_order_name[current_zonelist_order],
2630 page_group_by_mobility_disabled ? "off" : "on", 2632 page_group_by_mobility_disabled ? "off" : "on",
2631 vm_total_pages); 2633 vm_total_pages);
diff --git a/mm/slub.c b/mm/slub.c
index 30354bfeb43d..1c950775d6be 100644
--- a/mm/slub.c
+++ b/mm/slub.c
@@ -3737,7 +3737,7 @@ static int list_locations(struct kmem_cache *s, char *buf,
3737 to_cpumask(l->cpus)); 3737 to_cpumask(l->cpus));
3738 } 3738 }
3739 3739
3740 if (num_online_nodes() > 1 && !nodes_empty(l->nodes) && 3740 if (nr_online_nodes > 1 && !nodes_empty(l->nodes) &&
3741 len < PAGE_SIZE - 60) { 3741 len < PAGE_SIZE - 60) {
3742 len += sprintf(buf + len, " nodes="); 3742 len += sprintf(buf + len, " nodes=");
3743 len += nodelist_scnprintf(buf + len, PAGE_SIZE - len - 50, 3743 len += nodelist_scnprintf(buf + len, PAGE_SIZE - len - 50,
diff --git a/net/sunrpc/svc.c b/net/sunrpc/svc.c
index 8847add6ca16..5ed8931dfe98 100644
--- a/net/sunrpc/svc.c
+++ b/net/sunrpc/svc.c
@@ -124,7 +124,7 @@ svc_pool_map_choose_mode(void)
124{ 124{
125 unsigned int node; 125 unsigned int node;
126 126
127 if (num_online_nodes() > 1) { 127 if (nr_online_nodes > 1) {
128 /* 128 /*
129 * Actually have multiple NUMA nodes, 129 * Actually have multiple NUMA nodes,
130 * so split pools on NUMA node boundaries 130 * so split pools on NUMA node boundaries