Commit 04231b30 authored by Christoph Lameter's avatar Christoph Lameter Committed by Linus Torvalds

Memoryless nodes: Slab support

Slab should not allocate control structures for nodes without memory.  This
may seem to work right now but its unreliable since not all allocations can
fall back due to the use of GFP_THISNODE.

Switching a few for_each_online_node's to N_NORMAL_MEMORY will allow us to
only allocate for nodes that have regular memory.
Signed-off-by: default avatarChristoph Lameter <clameter@sgi.com>
Acked-by: default avatarNishanth Aravamudan <nacc@us.ibm.com>
Acked-by: default avatarLee Schermerhorn <lee.schermerhorn@hp.com>
Acked-by: default avatarBob Picco <bob.picco@hp.com>
Cc: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Cc: Mel Gorman <mel@skynet.ie>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 9422ffba
...@@ -1568,7 +1568,7 @@ void __init kmem_cache_init(void) ...@@ -1568,7 +1568,7 @@ void __init kmem_cache_init(void)
/* Replace the static kmem_list3 structures for the boot cpu */ /* Replace the static kmem_list3 structures for the boot cpu */
init_list(&cache_cache, &initkmem_list3[CACHE_CACHE], node); init_list(&cache_cache, &initkmem_list3[CACHE_CACHE], node);
for_each_online_node(nid) { for_each_node_state(nid, N_NORMAL_MEMORY) {
init_list(malloc_sizes[INDEX_AC].cs_cachep, init_list(malloc_sizes[INDEX_AC].cs_cachep,
&initkmem_list3[SIZE_AC + nid], nid); &initkmem_list3[SIZE_AC + nid], nid);
...@@ -1944,7 +1944,7 @@ static void __init set_up_list3s(struct kmem_cache *cachep, int index) ...@@ -1944,7 +1944,7 @@ static void __init set_up_list3s(struct kmem_cache *cachep, int index)
{ {
int node; int node;
for_each_online_node(node) { for_each_node_state(node, N_NORMAL_MEMORY) {
cachep->nodelists[node] = &initkmem_list3[index + node]; cachep->nodelists[node] = &initkmem_list3[index + node];
cachep->nodelists[node]->next_reap = jiffies + cachep->nodelists[node]->next_reap = jiffies +
REAPTIMEOUT_LIST3 + REAPTIMEOUT_LIST3 +
...@@ -2075,7 +2075,7 @@ static int __init_refok setup_cpu_cache(struct kmem_cache *cachep) ...@@ -2075,7 +2075,7 @@ static int __init_refok setup_cpu_cache(struct kmem_cache *cachep)
g_cpucache_up = PARTIAL_L3; g_cpucache_up = PARTIAL_L3;
} else { } else {
int node; int node;
for_each_online_node(node) { for_each_node_state(node, N_NORMAL_MEMORY) {
cachep->nodelists[node] = cachep->nodelists[node] =
kmalloc_node(sizeof(struct kmem_list3), kmalloc_node(sizeof(struct kmem_list3),
GFP_KERNEL, node); GFP_KERNEL, node);
...@@ -3792,7 +3792,7 @@ static int alloc_kmemlist(struct kmem_cache *cachep) ...@@ -3792,7 +3792,7 @@ static int alloc_kmemlist(struct kmem_cache *cachep)
struct array_cache *new_shared; struct array_cache *new_shared;
struct array_cache **new_alien = NULL; struct array_cache **new_alien = NULL;
for_each_online_node(node) { for_each_node_state(node, N_NORMAL_MEMORY) {
if (use_alien_caches) { if (use_alien_caches) {
new_alien = alloc_alien_cache(node, cachep->limit); new_alien = alloc_alien_cache(node, cachep->limit);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment