All of lore.kernel.org
 help / color / mirror / Atom feed
From: Steven Whitehouse <swhiteho@redhat.com>
To: cluster-devel.redhat.com
Subject: [Cluster-devel] [PATCH 5 of 5] Bz #248176: GFS2: invalid metadata block - REVISED
Date: Thu, 09 Aug 2007 09:35:28 +0100	[thread overview]
Message-ID: <1186648528.8765.731.camel@quoit> (raw)
In-Reply-To: <1186610894.25269.62.camel@technetium.msp.redhat.com>

Hi,

This one and the previous patch are now both in the -nmw git tree.
Thanks,

Steve.

On Wed, 2007-08-08 at 17:08 -0500, Bob Peterson wrote:
> This is for bugzilla bug #248176: GFS2: invalid metadata block
> 
> Patches 1 thru 3 were accepted upstream, but there were problems
> with 4 and 5.  Those issues have been resolved and now the recovery
> tests are passing without errors.  This code has gone through
> 41 * 3 successful gfs2 recovery tests before it hit an
> unrelated (openais) problem.  I'm continuing to test it.
> 
> This is a complete rewrite of patch 5 for bug #248176, written by
> Steve Whitehouse.  This is referred to in the bugzilla record as
> "new 6" and "a different solution".
> 
> The problem was that the journal inodes, although protected by
> a glock, were not synched with the other nodes because they don't
> use the inode glock synch operations (i.e. no "glops" were defined).
> Therefore, journal recovery on a journal-recovering node were causing
> the blocks to get out of sync with the node that was actually trying
> to use that journal as it comes back up from a reboot.
> 
> There are two possible solutions: (1) To make the journals use the
> normal inode glock sync operations, or (2) To make the journal
> operations take effect immediately (i.e. no caching).  Although
> option 1 works, it turns out to be a lot more code.  Steve opted
> for option 2, which is much simpler and therefore less prone to
> regression errors.
> 
> Regards,
> 
> Bob Peterson
> --
> Signed-off-by: Bob Peterson <rpeterso@redhat.com> 
> --
> diff --git a/fs/gfs2/ops_fstype.c b/fs/gfs2/ops_fstype.c
> index 58c730b..f0bcaa2 100644
> --- a/fs/gfs2/ops_fstype.c
> +++ b/fs/gfs2/ops_fstype.c
> @@ -358,7 +358,7 @@ static int init_journal(struct gfs2_sbd *sdp, int undo)
>  
>  		ip = GFS2_I(sdp->sd_jdesc->jd_inode);
>  		error = gfs2_glock_nq_init(ip->i_gl, LM_ST_SHARED,
> -					   LM_FLAG_NOEXP | GL_EXACT,
> +					   LM_FLAG_NOEXP | GL_EXACT | GL_NOCACHE,
>  					   &sdp->sd_jinode_gh);
>  		if (error) {
>  			fs_err(sdp, "can't acquire journal inode glock: %d\n",
> diff --git a/fs/gfs2/recovery.c b/fs/gfs2/recovery.c
> index 5ada38c..beb6c7a 100644
> --- a/fs/gfs2/recovery.c
> +++ b/fs/gfs2/recovery.c
> @@ -469,7 +469,7 @@ int gfs2_recover_journal(struct gfs2_jdesc *jd)
>  		};
>  
>  		error = gfs2_glock_nq_init(ip->i_gl, LM_ST_SHARED,
> -					   LM_FLAG_NOEXP, &ji_gh);
> +					   LM_FLAG_NOEXP | GL_NOCACHE, &ji_gh);
>  		if (error)
>  			goto fail_gunlock_j;
>  	} else {
> 
> 



  reply	other threads:[~2007-08-09  8:35 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-08-08 22:08 [Cluster-devel] [PATCH 5 of 5] Bz #248176: GFS2: invalid metadata block - REVISED Bob Peterson
2007-08-09  8:35 ` Steven Whitehouse [this message]
2007-08-09 19:07 ` Wendy Cheng
2007-08-10  8:22   ` 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=1186648528.8765.731.camel@quoit \
    --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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.