From mboxrd@z Thu Jan 1 00:00:00 1970 From: Steven Whitehouse Date: Tue, 29 Jan 2008 08:42:37 +0000 Subject: [Cluster-devel] [GFS2 PATCH] Allocate gfs2_rgrpd from slab memory In-Reply-To: <1201562426.18461.105.camel@technetium.msp.redhat.com> References: <1201562426.18461.105.camel@technetium.msp.redhat.com> Message-ID: <1201596157.22038.328.camel@quoit> List-Id: To: cluster-devel.redhat.com MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Hi, Now in the -nmw git tree. Thanks, Steve. On Mon, 2008-01-28 at 17:20 -0600, Bob Peterson wrote: > Hi, > > This patch moves the gfs2_rgrpd structure to its own slab > memory. This makes it easier to control and monitor, and > yields less memory fragmentation. > > Regards, > > Bob Peterson > Red Hat GFS > > Signed-off-by: Bob Peterson > -- > fs/gfs2/main.c | 10 ++++++++++ > fs/gfs2/rgrp.c | 4 ++-- > fs/gfs2/util.c | 1 + > fs/gfs2/util.h | 1 + > 4 files changed, 14 insertions(+), 2 deletions(-) > > diff --git a/fs/gfs2/main.c b/fs/gfs2/main.c > index 9c7765c..053e2eb 100644 > --- a/fs/gfs2/main.c > +++ b/fs/gfs2/main.c > @@ -89,6 +89,12 @@ static int __init init_gfs2_fs(void) > if (!gfs2_bufdata_cachep) > goto fail; > > + gfs2_rgrpd_cachep = kmem_cache_create("gfs2_rgrpd", > + sizeof(struct gfs2_rgrpd), > + 0, 0, NULL); > + if (!gfs2_rgrpd_cachep) > + goto fail; > + > error = register_filesystem(&gfs2_fs_type); > if (error) > goto fail; > @@ -108,6 +114,9 @@ fail_unregister: > fail: > gfs2_glock_exit(); > > + if (gfs2_rgrpd_cachep) > + kmem_cache_destroy(gfs2_rgrpd_cachep); > + > if (gfs2_bufdata_cachep) > kmem_cache_destroy(gfs2_bufdata_cachep); > > @@ -133,6 +142,7 @@ static void __exit exit_gfs2_fs(void) > unregister_filesystem(&gfs2_fs_type); > unregister_filesystem(&gfs2meta_fs_type); > > + kmem_cache_destroy(gfs2_rgrpd_cachep); > kmem_cache_destroy(gfs2_bufdata_cachep); > kmem_cache_destroy(gfs2_inode_cachep); > kmem_cache_destroy(gfs2_glock_cachep); > diff --git a/fs/gfs2/rgrp.c b/fs/gfs2/rgrp.c > index 7b9d6f1..dc7e83e 100644 > --- a/fs/gfs2/rgrp.c > +++ b/fs/gfs2/rgrp.c > @@ -353,7 +353,7 @@ static void clear_rgrpdi(struct gfs2_sbd *sdp) > } > > kfree(rgd->rd_bits); > - kfree(rgd); > + kmem_cache_free(gfs2_rgrpd_cachep, rgd); > } > } > > @@ -516,7 +516,7 @@ static int read_rindex_entry(struct gfs2_inode *ip, > return error; > } > > - rgd = kzalloc(sizeof(struct gfs2_rgrpd), GFP_NOFS); > + rgd = kmem_cache_zalloc(gfs2_rgrpd_cachep, GFP_NOFS); > error = -ENOMEM; > if (!rgd) > return error; > diff --git a/fs/gfs2/util.c b/fs/gfs2/util.c > index 424a077..fe9c28e 100644 > --- a/fs/gfs2/util.c > +++ b/fs/gfs2/util.c > @@ -25,6 +25,7 @@ > struct kmem_cache *gfs2_glock_cachep __read_mostly; > struct kmem_cache *gfs2_inode_cachep __read_mostly; > struct kmem_cache *gfs2_bufdata_cachep __read_mostly; > +struct kmem_cache *gfs2_rgrpd_cachep __read_mostly; > > void gfs2_assert_i(struct gfs2_sbd *sdp) > { > diff --git a/fs/gfs2/util.h b/fs/gfs2/util.h > index 28938a4..ac0c567 100644 > --- a/fs/gfs2/util.h > +++ b/fs/gfs2/util.h > @@ -147,6 +147,7 @@ gfs2_io_error_bh_i((sdp), (bh), __FUNCTION__, __FILE__, __LINE__); > extern struct kmem_cache *gfs2_glock_cachep; > extern struct kmem_cache *gfs2_inode_cachep; > extern struct kmem_cache *gfs2_bufdata_cachep; > +extern struct kmem_cache *gfs2_rgrpd_cachep; > > static inline unsigned int gfs2_tune_get_i(struct gfs2_tune *gt, > unsigned int *p) > >