From: Steven Whitehouse <swhiteho@redhat.com>
To: cluster-devel.redhat.com
Subject: [Cluster-devel] [PATCH 05/24] GFS2: Use slab for block reservation memory
Date: Thu, 17 May 2012 13:23:12 +0100 [thread overview]
Message-ID: <1337257411-3173-6-git-send-email-swhiteho@redhat.com> (raw)
In-Reply-To: <1337257411-3173-1-git-send-email-swhiteho@redhat.com>
From: Bob Peterson <rpeterso@redhat.com>
This patch changes block reservations so it uses slab storage.
Signed-off-by: Bob Peterson <rpeterso@redhat.com>
Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
diff --git a/fs/gfs2/main.c b/fs/gfs2/main.c
index 754426b..ce17944 100644
--- a/fs/gfs2/main.c
+++ b/fs/gfs2/main.c
@@ -143,6 +143,12 @@ static int __init init_gfs2_fs(void)
if (!gfs2_quotad_cachep)
goto fail;
+ gfs2_rsrv_cachep = kmem_cache_create("gfs2_mblk",
+ sizeof(struct gfs2_blkreserv),
+ 0, 0, NULL);
+ if (!gfs2_rsrv_cachep)
+ goto fail;
+
register_shrinker(&qd_shrinker);
error = register_filesystem(&gfs2_fs_type);
@@ -186,6 +192,9 @@ fail:
unregister_shrinker(&qd_shrinker);
gfs2_glock_exit();
+ if (gfs2_rsrv_cachep)
+ kmem_cache_destroy(gfs2_rsrv_cachep);
+
if (gfs2_quotad_cachep)
kmem_cache_destroy(gfs2_quotad_cachep);
@@ -226,6 +235,7 @@ static void __exit exit_gfs2_fs(void)
rcu_barrier();
mempool_destroy(gfs2_bh_pool);
+ kmem_cache_destroy(gfs2_rsrv_cachep);
kmem_cache_destroy(gfs2_quotad_cachep);
kmem_cache_destroy(gfs2_rgrpd_cachep);
kmem_cache_destroy(gfs2_bufdata_cachep);
diff --git a/fs/gfs2/rgrp.c b/fs/gfs2/rgrp.c
index 3df65c9..69fa32f 100644
--- a/fs/gfs2/rgrp.c
+++ b/fs/gfs2/rgrp.c
@@ -1002,11 +1002,13 @@ struct gfs2_qadata *gfs2_qadata_get(struct gfs2_inode *ip)
* Returns: the struct gfs2_qadata
*/
-static struct gfs2_blkreserv *gfs2_blkrsv_get(struct gfs2_inode *ip)
+static int gfs2_blkrsv_get(struct gfs2_inode *ip)
{
BUG_ON(ip->i_res != NULL);
- ip->i_res = kzalloc(sizeof(struct gfs2_blkreserv), GFP_NOFS);
- return ip->i_res;
+ ip->i_res = kmem_cache_zalloc(gfs2_rsrv_cachep, GFP_NOFS);
+ if (!ip->i_res)
+ return -ENOMEM;
+ return 0;
}
/**
@@ -1164,7 +1166,7 @@ static int get_local_rgrp(struct gfs2_inode *ip, u64 *last_unlinked)
static void gfs2_blkrsv_put(struct gfs2_inode *ip)
{
BUG_ON(ip->i_res == NULL);
- kfree(ip->i_res);
+ kmem_cache_free(gfs2_rsrv_cachep, ip->i_res);
ip->i_res = NULL;
}
@@ -1179,14 +1181,15 @@ int gfs2_inplace_reserve(struct gfs2_inode *ip, u32 requested)
{
struct gfs2_sbd *sdp = GFS2_SB(&ip->i_inode);
struct gfs2_blkreserv *rs;
- int error = 0;
+ int error;
u64 last_unlinked = NO_BLOCK;
int tries = 0;
- rs = gfs2_blkrsv_get(ip);
- if (!rs)
- return -ENOMEM;
+ error = gfs2_blkrsv_get(ip);
+ if (error)
+ return error;
+ rs = ip->i_res;
rs->rs_requested = requested;
if (gfs2_assert_warn(sdp, requested)) {
error = -EINVAL;
diff --git a/fs/gfs2/util.c b/fs/gfs2/util.c
index 9e7765e..3afc6ac 100644
--- a/fs/gfs2/util.c
+++ b/fs/gfs2/util.c
@@ -25,6 +25,7 @@ struct kmem_cache *gfs2_inode_cachep __read_mostly;
struct kmem_cache *gfs2_bufdata_cachep __read_mostly;
struct kmem_cache *gfs2_rgrpd_cachep __read_mostly;
struct kmem_cache *gfs2_quotad_cachep __read_mostly;
+struct kmem_cache *gfs2_rsrv_cachep __read_mostly;
mempool_t *gfs2_bh_pool __read_mostly;
void gfs2_assert_i(struct gfs2_sbd *sdp)
diff --git a/fs/gfs2/util.h b/fs/gfs2/util.h
index a4ce76c..8fbe6cf 100644
--- a/fs/gfs2/util.h
+++ b/fs/gfs2/util.h
@@ -152,6 +152,7 @@ extern struct kmem_cache *gfs2_inode_cachep;
extern struct kmem_cache *gfs2_bufdata_cachep;
extern struct kmem_cache *gfs2_rgrpd_cachep;
extern struct kmem_cache *gfs2_quotad_cachep;
+extern struct kmem_cache *gfs2_rsrv_cachep;
extern mempool_t *gfs2_bh_pool;
static inline unsigned int gfs2_tune_get_i(struct gfs2_tune *gt,
--
1.7.4
next prev parent reply other threads:[~2012-05-17 12:23 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-05-17 12:23 [Cluster-devel] GFS2: Pre-pull patch posting (merge window) Steven Whitehouse
2012-05-17 12:23 ` [Cluster-devel] [PATCH 01/24] GFS2: Drop "pull" argument from log_write_header() Steven Whitehouse
2012-05-17 12:23 ` [Cluster-devel] [PATCH 02/24] GFS2: Make gfs2_log_fake_buf() write the buffer too Steven Whitehouse
2012-05-17 12:23 ` [Cluster-devel] [PATCH 03/24] GFS2: Rename function gfs2_close to gfs2_release Steven Whitehouse
2012-05-17 12:23 ` [Cluster-devel] [PATCH 04/24] GFS2: make function gfs2_page_add_databufs static Steven Whitehouse
2012-05-17 12:23 ` Steven Whitehouse [this message]
2012-05-17 12:23 ` [Cluster-devel] [PATCH 06/24] GFS2: Eliminate offset parameter to gfs2_setbit Steven Whitehouse
2012-05-17 12:23 ` [Cluster-devel] [PATCH 07/24] GFS2: Fix function parameter comments in rgrp.c Steven Whitehouse
2012-05-17 12:23 ` [Cluster-devel] [PATCH 08/24] GFS2: Change variable blk to biblk Steven Whitehouse
2012-05-17 12:23 ` [Cluster-devel] [PATCH 09/24] GFS2: Use variable rather than qa to determine if unstuff necessary Steven Whitehouse
2012-05-17 12:23 ` [Cluster-devel] [PATCH 10/24] GFS2: Clean up log write code path Steven Whitehouse
2012-05-17 12:23 ` [Cluster-devel] [PATCH 11/24] GFS2: Remove duplicate log code Steven Whitehouse
2012-05-17 12:23 ` [Cluster-devel] [PATCH 12/24] GFS2: Remove bd_list_tr Steven Whitehouse
2012-05-17 12:23 ` [Cluster-devel] [PATCH 13/24] GFS2: Remove unused argument from gfs2_internal_read Steven Whitehouse
2012-05-17 12:23 ` [Cluster-devel] [PATCH 14/24] GFS2: Log code fixes Steven Whitehouse
2012-05-17 12:23 ` [Cluster-devel] [PATCH 15/24] GFS2: Eliminate needless parameter from function gfs2_setbit Steven Whitehouse
2012-05-17 12:23 ` [Cluster-devel] [PATCH 16/24] GFS2: Eliminate vestigial sd_log_le_rg Steven Whitehouse
2012-05-17 12:23 ` [Cluster-devel] [PATCH 17/24] GFS2: eliminate log elements and simplify Steven Whitehouse
2012-05-17 12:23 ` [Cluster-devel] [PATCH 18/24] GFS2: Fix sgid propagation when using ACLs Steven Whitehouse
2012-05-17 12:23 ` [Cluster-devel] [PATCH 19/24] GFS2: Remove redundant metadata block type check Steven Whitehouse
2012-05-17 12:23 ` [Cluster-devel] [PATCH 20/24] GFS2: Update main gfs2 doc Steven Whitehouse
2012-05-17 12:23 ` [Cluster-devel] [PATCH 21/24] GFS2: Update glock doc to add new stats info Steven Whitehouse
2012-05-17 12:23 ` [Cluster-devel] [PATCH 22/24] GFS2: Eliminate unused "new" parameter to gfs2_meta_indirect_buffer Steven Whitehouse
2012-05-17 12:23 ` [Cluster-devel] [PATCH 23/24] GFS2: Add rgrp information to block_alloc trace point Steven Whitehouse
2012-05-17 12:23 ` [Cluster-devel] [PATCH 24/24] GFS2: Fix quota adjustment return code Steven Whitehouse
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1337257411-3173-6-git-send-email-swhiteho@redhat.com \
--to=swhiteho@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).