slub: Prepare inuse field in new_slab()
Christoph Lameter [Tue, 9 Aug 2011 21:12:24 +0000 (16:12 -0500)]
inuse will always be set to page->objects. There is no point in
initializing the field to zero in new_slab() and then overwriting
the value in __slab_alloc().

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

mm/slub.c

index d4b76be..83bb81d 100644 (file)
--- a/mm/slub.c
+++ b/mm/slub.c
@@ -1447,7 +1447,7 @@ static struct page *new_slab(struct kmem_cache *s, gfp_t flags, int node)
        set_freepointer(s, last, NULL);
 
        page->freelist = start;
-       page->inuse = 0;
+       page->inuse = page->objects;
        page->frozen = 1;
 out:
        return page;
@@ -2139,7 +2139,6 @@ new_slab:
                 */
                object = page->freelist;
                page->freelist = NULL;
-               page->inuse = page->objects;
 
                stat(s, ALLOC_SLAB);
                c->node = page_to_nid(page);
@@ -2681,7 +2680,7 @@ static void early_kmem_cache_node_alloc(int node)
        n = page->freelist;
        BUG_ON(!n);
        page->freelist = get_freepointer(kmem_cache_node, n);
-       page->inuse++;
+       page->inuse = 1;
        page->frozen = 0;
        kmem_cache_node->node[node] = n;
 #ifdef CONFIG_SLUB_DEBUG