mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-11-20 00:26:39 +08:00
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: Christoph Lameter <clameter@sgi.com> Acked-by: Nishanth Aravamudan <nacc@us.ibm.com> Acked-by: Lee Schermerhorn <lee.schermerhorn@hp.com> Acked-by: Bob Picco <bob.picco@hp.com> Cc: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com> Cc: Mel Gorman <mel@skynet.ie> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
9422ffba4a
commit
04231b3002
@ -1568,7 +1568,7 @@ void __init kmem_cache_init(void)
|
||||
/* Replace the static kmem_list3 structures for the boot cpu */
|
||||
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,
|
||||
&initkmem_list3[SIZE_AC + nid], nid);
|
||||
|
||||
@ -1944,7 +1944,7 @@ static void __init set_up_list3s(struct kmem_cache *cachep, int index)
|
||||
{
|
||||
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]->next_reap = jiffies +
|
||||
REAPTIMEOUT_LIST3 +
|
||||
@ -2075,7 +2075,7 @@ static int __init_refok setup_cpu_cache(struct kmem_cache *cachep)
|
||||
g_cpucache_up = PARTIAL_L3;
|
||||
} else {
|
||||
int node;
|
||||
for_each_online_node(node) {
|
||||
for_each_node_state(node, N_NORMAL_MEMORY) {
|
||||
cachep->nodelists[node] =
|
||||
kmalloc_node(sizeof(struct kmem_list3),
|
||||
GFP_KERNEL, node);
|
||||
@ -3792,7 +3792,7 @@ static int alloc_kmemlist(struct kmem_cache *cachep)
|
||||
struct array_cache *new_shared;
|
||||
struct array_cache **new_alien = NULL;
|
||||
|
||||
for_each_online_node(node) {
|
||||
for_each_node_state(node, N_NORMAL_MEMORY) {
|
||||
|
||||
if (use_alien_caches) {
|
||||
new_alien = alloc_alien_cache(node, cachep->limit);
|
||||
|
Loading…
Reference in New Issue
Block a user