On Tue, 9 Sep 2014 12:05:14 -0700 Nishanth Aravamudan <nacc@xxxxxxxxxxxxxxxxxx> wrote: > From: Joonsoo Kim <iamjoonsoo.kim@xxxxxxx> > > Update the SLUB code to search for partial slabs on the nearest node > with memory in the presence of memoryless nodes. Additionally, do not > consider it to be an ALLOC_NODE_MISMATCH (and deactivate the slab) when > a memoryless-node specified allocation goes off-node. > > ... > > --- a/mm/slub.c > +++ b/mm/slub.c > @@ -1699,7 +1699,12 @@ 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_mem_id() : node; > + int searchnode = node; > + > + if (node == NUMA_NO_NODE) > + searchnode = numa_mem_id(); > + else if (!node_present_pages(node)) > + searchnode = node_to_mem_node(node); I expect a call to node_to_mem_node() will always be preceded by a test of node_present_pages(). Perhaps node_to_mem_node() should just do the node_present_pages() call itself? -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>