aboutsummaryrefslogtreecommitdiffstats
path: root/fs/gfs2/main.c
diff options
context:
space:
mode:
authorBob Peterson <rpeterso@redhat.com>2015-10-26 10:40:28 -0500
committerBob Peterson <rpeterso@redhat.com>2015-11-24 08:38:44 -0600
commitb54e9a0b92d44843f6719ae22b0f6daf5b9b23b4 (patch)
treec0e4f124cdd1208f046fc0fc19c090cc3204e6f3 /fs/gfs2/main.c
parent39b0555f7a1f96ecd303103df15596db49c36c65 (diff)
downloadlinux-b54e9a0b92d44843f6719ae22b0f6daf5b9b23b4.tar.gz
GFS2: Extract quota data from reservations structure (revert 5407e24)
This patch basically reverts the majority of patch 5407e24. That patch eliminated the gfs2_qadata structure in favor of just using the reservations structure. The problem with doing that is that it increases the size of the reservations structure. That is not an issue until it comes time to fold the reservations structure into the inode in memory so we know it's always there. By separating out the quota structure again, we aren't punishing the non-quota users by making all the inodes bigger, requiring more slab space. This patch creates a new slab area to allocate the quota stuff so it's managed a little more sanely. Signed-off-by: Bob Peterson <rpeterso@redhat.com>
Diffstat (limited to 'fs/gfs2/main.c')
-rw-r--r--fs/gfs2/main.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/fs/gfs2/main.c b/fs/gfs2/main.c
index fb2b42cf46b5d..cde5c73c42df6 100644
--- a/fs/gfs2/main.c
+++ b/fs/gfs2/main.c
@@ -41,6 +41,7 @@ static void gfs2_init_inode_once(void *foo)
inode_init_once(&ip->i_inode);
init_rwsem(&ip->i_rw_mutex);
INIT_LIST_HEAD(&ip->i_trunc_list);
+ ip->i_qadata = NULL;
ip->i_res = NULL;
ip->i_hash_cache = NULL;
}
@@ -135,6 +136,12 @@ static int __init init_gfs2_fs(void)
if (!gfs2_quotad_cachep)
goto fail;
+ gfs2_qadata_cachep = kmem_cache_create("gfs2_qadata",
+ sizeof(struct gfs2_qadata),
+ 0, 0, NULL);
+ if (!gfs2_qadata_cachep)
+ goto fail;
+
gfs2_rsrv_cachep = kmem_cache_create("gfs2_mblk",
sizeof(struct gfs2_blkreserv),
0, 0, NULL);
@@ -196,6 +203,9 @@ fail_lru:
if (gfs2_rsrv_cachep)
kmem_cache_destroy(gfs2_rsrv_cachep);
+ if (gfs2_qadata_cachep)
+ kmem_cache_destroy(gfs2_qadata_cachep);
+
if (gfs2_quotad_cachep)
kmem_cache_destroy(gfs2_quotad_cachep);
@@ -239,6 +249,7 @@ static void __exit exit_gfs2_fs(void)
mempool_destroy(gfs2_page_pool);
kmem_cache_destroy(gfs2_rsrv_cachep);
+ kmem_cache_destroy(gfs2_qadata_cachep);
kmem_cache_destroy(gfs2_quotad_cachep);
kmem_cache_destroy(gfs2_rgrpd_cachep);
kmem_cache_destroy(gfs2_bufdata_cachep);