From mboxrd@z Thu Jan 1 00:00:00 1970 From: Steven Whitehouse Date: Mon, 20 Apr 2009 10:18:38 +0100 Subject: [Cluster-devel] GFS2: Clear dirty bit at end of inode glock sync In-Reply-To: <1240218982.3345.2.camel@localhost.localdomain> References: <1240218982.3345.2.camel@localhost.localdomain> Message-ID: <1240219118.3345.3.camel@localhost.localdomain> List-Id: To: cluster-devel.redhat.com MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Hi, I should also add that this patch has gone into the -fixes tree as well and I'm intending to push it to Linus fairly shortly, Steve. On Mon, 2009-04-20 at 10:16 +0100, Steven Whitehouse wrote: > >From 5e60bcaa263dac8a3df4334459414bcb0808009f Mon Sep 17 00:00:00 2001 > From: Steven Whitehouse > Date: Mon, 20 Apr 2009 08:58:45 +0100 > Subject: [PATCH] GFS2: Clear dirty bit at end of inode glock sync > > The dirty bit can get set during the inode glock sync. Its too > complicated to change that at the moment, so this is the quick > fix - to clear the bit again at the end of the function. > > Signed-off-by: Steven Whitehouse > > diff --git a/fs/gfs2/glops.c b/fs/gfs2/glops.c > index bf23a62..70f87f4 100644 > --- a/fs/gfs2/glops.c > +++ b/fs/gfs2/glops.c > @@ -156,6 +156,12 @@ static void inode_go_sync(struct gfs2_glock *gl) > error = filemap_fdatawait(metamapping); > mapping_set_error(metamapping, error); > gfs2_ail_empty_gl(gl); > + /* > + * Writeback of the data mapping may cause the dirty flag to be set > + * so we have to clear it again here. > + */ > + smp_mb__before_clear_bit(); > + clear_bit(GLF_DIRTY, &gl->gl_flags); > } > > /**