slub: Remove node check in slab_free
authorChristoph Lameter <cl@linux.com>
Tue, 17 May 2011 21:29:31 +0000 (16:29 -0500)
committerPekka Enberg <penberg@kernel.org>
Sat, 21 May 2011 09:53:53 +0000 (12:53 +0300)
We can set the page pointing in the percpu structure to
NULL to have the same effect as setting c->node to NUMA_NO_NODE.

Gets rid of one check in slab_free() that was only used for
forcing the slab_free to the slowpath for debugging.

We still need to set c->node to NUMA_NO_NODE to force the
slab_alloc() fastpath to the slowpath in case of debugging.

Signed-off-by: Christoph Lameter <cl@linux.com>
Signed-off-by: Pekka Enberg <penberg@kernel.org>
mm/slub.c

index 9f7bb93e17ecd00f38ad85d9b5a8f3a6c1b50de8..9ee6f515736d188d2935903ec5acfdcaba6d0579 100644 (file)
--- a/mm/slub.c
+++ b/mm/slub.c
@@ -1881,6 +1881,8 @@ debug:
 
        page->inuse++;
        page->freelist = get_freepointer(s, object);
+       deactivate_slab(s, c);
+       c->page = NULL;
        c->node = NUMA_NO_NODE;
        goto unlock_out;
 }
@@ -2112,7 +2114,7 @@ redo:
        tid = c->tid;
        barrier();
 
-       if (likely(page == c->page && c->node != NUMA_NO_NODE)) {
+       if (likely(page == c->page)) {
                set_freepointer(s, object, c->freelist);
 
                if (unlikely(!this_cpu_cmpxchg_double(