diff options
author | Christoph Lameter <clameter@engr.sgi.com> | 2006-02-01 03:05:43 -0800 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-02-01 08:53:17 -0800 |
commit | 18f820f655ce93b1e4d9b48fc6fcafc64157c6bc (patch) | |
tree | 62c759bb1d7d3675a3dee5dbb345cb63dfa7522b /mm/slab.c | |
parent | 3dafccf22751429e69b6266636cf3acf45b48075 (diff) | |
download | lwn-18f820f655ce93b1e4d9b48fc6fcafc64157c6bc.tar.gz lwn-18f820f655ce93b1e4d9b48fc6fcafc64157c6bc.zip |
[PATCH] slab: minor cleanup to kmem_cache_alloc_node
Clean up kmem_cache_alloc_node a bit.
Signed-off-by: Christoph Lameter <clameter@sgi.com>
Acked-by: Manfred Spraul <manfred@colorfullife.com>
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'mm/slab.c')
-rw-r--r-- | mm/slab.c | 21 |
1 files changed, 6 insertions, 15 deletions
diff --git a/mm/slab.c b/mm/slab.c index 1a014aaf4491..bb7a9837b949 100644 --- a/mm/slab.c +++ b/mm/slab.c @@ -2928,27 +2928,18 @@ void *kmem_cache_alloc_node(kmem_cache_t *cachep, gfp_t flags, int nodeid) unsigned long save_flags; void *ptr; - if (nodeid == -1) - return __cache_alloc(cachep, flags); - - if (unlikely(!cachep->nodelists[nodeid])) { - /* Fall back to __cache_alloc if we run into trouble */ - printk(KERN_WARNING - "slab: not allocating in inactive node %d for cache %s\n", - nodeid, cachep->name); - return __cache_alloc(cachep, flags); - } - cache_alloc_debugcheck_before(cachep, flags); local_irq_save(save_flags); - if (nodeid == numa_node_id()) + + if (nodeid == -1 || nodeid == numa_node_id() || + !cachep->nodelists[nodeid]) ptr = ____cache_alloc(cachep, flags); else ptr = __cache_alloc_node(cachep, flags, nodeid); local_irq_restore(save_flags); - ptr = - cache_alloc_debugcheck_after(cachep, flags, ptr, - __builtin_return_address(0)); + + ptr = cache_alloc_debugcheck_after(cachep, flags, ptr, + __builtin_return_address(0)); return ptr; } |