FAQ Search Today's Posts Mark Forums Read
» Video Reviews

» Linux Archive

Linux-archive is a website aiming to archive linux email lists and to make them easily accessible for linux users/developers.


» Sponsor

» Partners

» Sponsor

Go Back   Linux Archive > Redhat > Cluster Development

 
 
LinkBack Thread Tools
 
Old 03-05-2012, 03:25 PM
Steven Whitehouse
 
Default GFS2: make sure rgrps are up to date in func gfs2_blk2rgrpd

Hi,

Now in the -nmw git tree. Thanks,

Steve.

On Mon, 2012-03-05 at 10:19 -0500, Bob Peterson wrote:
> Hi,
>
> This patch adds a call to gfs2_rindex_update from function gfs2_blk2rgrpd
> and removes calls to it that are made redundant by it. The problem is
> that a gfs2_grow can add rgrps to the rindex, then put those rgrps into
> use, thus rendering the rindex we read in at mount time incomplete.
>
> Regards,
>
> Bob Peterson
> Red Hat File Systems
>
> Signed-off-by: Bob Peterson <rpeterso@redhat.com>
> --
> GFS2: make sure rgrps are up to date in func gfs2_blk2rgrpd
>
> This patch adds a call to gfs2_rindex_update from function gfs2_blk2rgrpd
> and removes calls to it that are made redundant by it. The problem is
> that a gfs2_grow can add rgrps to the rindex, then put those rgrps into
> use, thus rendering the rindex we read in at mount time incomplete.
> --
> diff --git a/fs/gfs2/rgrp.c b/fs/gfs2/rgrp.c
> index 6ff9f17..19bde40 100644
> --- a/fs/gfs2/rgrp.c
> +++ b/fs/gfs2/rgrp.c
> @@ -332,6 +332,9 @@ struct gfs2_rgrpd *gfs2_blk2rgrpd(struct gfs2_sbd *sdp, u64 blk, bool exact)
> struct rb_node *n, *next;
> struct gfs2_rgrpd *cur;
>
> + if (gfs2_rindex_update(sdp))
> + return NULL;
> +
> spin_lock(&sdp->sd_rindex_spin);
> n = sdp->sd_rindex_tree.rb_node;
> while (n) {
> @@ -917,10 +920,6 @@ int gfs2_fitrim(struct file *filp, void __user *argp)
> if (!blk_queue_discard(q))
> return -EOPNOTSUPP;
>
> - ret = gfs2_rindex_update(sdp);
> - if (ret)
> - return ret;
> -
> if (argp == NULL) {
> r.start = 0;
> r.len = ULLONG_MAX;
> @@ -1671,13 +1670,8 @@ int gfs2_check_blk_type(struct gfs2_sbd *sdp, u64 no_addr, unsigned int type)
> {
> struct gfs2_rgrpd *rgd;
> struct gfs2_holder rgd_gh;
> - int error;
> -
> - error = gfs2_rindex_update(sdp);
> - if (error)
> - return error;
> + int error = -EINVAL;
>
> - error = -EINVAL;
> rgd = gfs2_blk2rgrpd(sdp, no_addr, 1);
> if (!rgd)
> goto fail;
>
 

Thread Tools




All times are GMT. The time now is 05:43 PM.

VBulletin, Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO ©2007, Crawlability, Inc.
Copyright 2007 - 2008, www.linux-archive.org