mm/sl[aou]b: Move kmem_cache refcounting to common code
Christoph Lameter [Tue, 4 Sep 2012 23:38:33 +0000 (23:38 +0000)]
Get rid of the refcount stuff in the allocators and do that part of
kmem_cache management in the common code.

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

mm/slab.c
mm/slab_common.c
mm/slob.c
mm/slub.c

index f1f6d54..11d9af5 100644 (file)
--- a/mm/slab.c
+++ b/mm/slab.c
@@ -2555,7 +2555,6 @@ __kmem_cache_create (struct kmem_cache *cachep, unsigned long flags)
                 */
                BUG_ON(ZERO_OR_NULL_PTR(cachep->slabp_cache));
        }
-       cachep->refcount = 1;
 
        err = setup_cpu_cache(cachep, gfp);
        if (err) {
index 8a85a19..651a3c6 100644 (file)
@@ -125,11 +125,12 @@ struct kmem_cache *kmem_cache_create(const char *name, size_t size, size_t align
                }
 
                err = __kmem_cache_create(s, flags);
-               if (!err)
+               if (!err) {
 
+                       s->refcount = 1;
                        list_add(&s->list, &slab_caches);
 
-               else {
+               } else {
                        kfree(s->name);
                        kmem_cache_free(kmem_cache, s);
                }
index cac05d9..3edfeaa 100644 (file)
--- a/mm/slob.c
+++ b/mm/slob.c
@@ -524,7 +524,6 @@ int __kmem_cache_create(struct kmem_cache *c, unsigned long flags)
        if (c->align < align)
                c->align = align;
 
-       c->refcount = 1;
        return 0;
 }
 
index d8ee419..0b122d8 100644 (file)
--- a/mm/slub.c
+++ b/mm/slub.c
@@ -3093,7 +3093,6 @@ static int kmem_cache_open(struct kmem_cache *s, unsigned long flags)
        else
                s->cpu_partial = 30;
 
-       s->refcount = 1;
 #ifdef CONFIG_NUMA
        s->remote_node_defrag_ratio = 1000;
 #endif