diff options
author | Joonsoo Kim <[email protected]> | 2014-06-06 14:35:36 -0700 |
---|---|---|
committer | Linus Torvalds <[email protected]> | 2014-06-06 16:08:06 -0700 |
commit | 844e4d66f4ec3b6b6d3bcfcfba3ade2b962771e2 (patch) | |
tree | ca10d7206cbaec5ff54b3c41ac9615f0d566393e | |
parent | 71abdc15adf8c702a1dd535f8e30df50758848d2 (diff) |
slub: search partial list on numa_mem_id(), instead of numa_node_id()
Currently, if allocation constraint to node is NUMA_NO_NODE, we search a
partial slab on numa_node_id() node. This doesn't work properly on a
system having memoryless nodes, since it can have no memory on that node
so there must be no partial slab on that node.
On that node, page allocation always falls back to numa_mem_id() first.
So searching a partial slab on numa_node_id() in that case is the proper
solution for the memoryless node case.
Signed-off-by: Joonsoo Kim <[email protected]>
Acked-by: Nishanth Aravamudan <[email protected]>
Acked-by: David Rientjes <[email protected]>
Acked-by: Christoph Lameter <[email protected]>
Cc: Pekka Enberg <[email protected]>
Cc: Wanpeng Li <[email protected]>
Cc: Han Pingtian <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
-rw-r--r-- | mm/slub.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/mm/slub.c b/mm/slub.c index fdf0fe4da9a9..b2b047327d76 100644 --- a/mm/slub.c +++ b/mm/slub.c @@ -1726,7 +1726,7 @@ static void *get_partial(struct kmem_cache *s, gfp_t flags, int node, struct kmem_cache_cpu *c) { void *object; - int searchnode = (node == NUMA_NO_NODE) ? numa_node_id() : node; + int searchnode = (node == NUMA_NO_NODE) ? numa_mem_id() : node; object = get_partial_node(s, get_node(s, searchnode), c, flags); if (object || node != NUMA_NO_NODE) |