SLUB: do not fail on broken memory configurations
Print a big fat warning and do what is necessary to continue if a node is marked as up (meaning either node is online (upstream) or node has memory (Andrew's tree)) but allocations from the node do not succeed. Signed-off-by: Christoph Lameter <clameter@sgi.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
9e86943b6c
commit
a2f92ee7e7
|
@ -1877,9 +1877,16 @@ static struct kmem_cache_node * __init early_kmem_cache_node_alloc(gfp_t gfpflag
|
|||
|
||||
BUG_ON(kmalloc_caches->size < sizeof(struct kmem_cache_node));
|
||||
|
||||
page = new_slab(kmalloc_caches, gfpflags | GFP_THISNODE, node);
|
||||
page = new_slab(kmalloc_caches, gfpflags, node);
|
||||
|
||||
BUG_ON(!page);
|
||||
if (page_to_nid(page) != node) {
|
||||
printk(KERN_ERR "SLUB: Unable to allocate memory from "
|
||||
"node %d\n", node);
|
||||
printk(KERN_ERR "SLUB: Allocating a useless per node structure "
|
||||
"in order to be able to continue\n");
|
||||
}
|
||||
|
||||
n = page->freelist;
|
||||
BUG_ON(!n);
|
||||
page->freelist = get_freepointer(kmalloc_caches, n);
|
||||
|
|
Loading…
Reference in a new issue