ceph: move to a dedicated slabcache for ceph_cap_snap
[sfrench/cifs-2.6.git] / fs / ceph / super.c
index bf79f369aec687f4058e3b8fbb78dd7a79e88866..978463fa822c2e95f489fdf185f685d225064217 100644 (file)
@@ -864,6 +864,7 @@ static void destroy_fs_client(struct ceph_fs_client *fsc)
  */
 struct kmem_cache *ceph_inode_cachep;
 struct kmem_cache *ceph_cap_cachep;
+struct kmem_cache *ceph_cap_snap_cachep;
 struct kmem_cache *ceph_cap_flush_cachep;
 struct kmem_cache *ceph_dentry_cachep;
 struct kmem_cache *ceph_file_cachep;
@@ -892,6 +893,9 @@ static int __init init_caches(void)
        ceph_cap_cachep = KMEM_CACHE(ceph_cap, SLAB_MEM_SPREAD);
        if (!ceph_cap_cachep)
                goto bad_cap;
+       ceph_cap_snap_cachep = KMEM_CACHE(ceph_cap_snap, SLAB_MEM_SPREAD);
+       if (!ceph_cap_snap_cachep)
+               goto bad_cap_snap;
        ceph_cap_flush_cachep = KMEM_CACHE(ceph_cap_flush,
                                           SLAB_RECLAIM_ACCOUNT|SLAB_MEM_SPREAD);
        if (!ceph_cap_flush_cachep)
@@ -931,6 +935,8 @@ bad_file:
 bad_dentry:
        kmem_cache_destroy(ceph_cap_flush_cachep);
 bad_cap_flush:
+       kmem_cache_destroy(ceph_cap_snap_cachep);
+bad_cap_snap:
        kmem_cache_destroy(ceph_cap_cachep);
 bad_cap:
        kmem_cache_destroy(ceph_inode_cachep);
@@ -947,6 +953,7 @@ static void destroy_caches(void)
 
        kmem_cache_destroy(ceph_inode_cachep);
        kmem_cache_destroy(ceph_cap_cachep);
+       kmem_cache_destroy(ceph_cap_snap_cachep);
        kmem_cache_destroy(ceph_cap_flush_cachep);
        kmem_cache_destroy(ceph_dentry_cachep);
        kmem_cache_destroy(ceph_file_cachep);