From: Christoph Lameter Clean up kmem_cache_alloc_node a bit. Signed-off-by: Christoph Lameter Acked-by: Manfred Spraul Signed-off-by: Pekka Enberg Signed-off-by: Andrew Morton --- mm/slab.c | 21 ++++++--------------- 1 files changed, 6 insertions(+), 15 deletions(-) diff -puN mm/slab.c~slab-minor-cleanup-to-kmem_cache_alloc_node mm/slab.c --- devel/mm/slab.c~slab-minor-cleanup-to-kmem_cache_alloc_node 2006-01-15 18:39:58.000000000 -0800 +++ devel-akpm/mm/slab.c 2006-01-15 18:39:58.000000000 -0800 @@ -2928,27 +2928,18 @@ void *kmem_cache_alloc_node(kmem_cache_t 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; } _