>From 5e60bcaa263dac8a3df4334459414bcb0808009f Mon Sep 17 00:00:00 2001
From: Steven Whitehouse <[email protected]>
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 <[email protected]>

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);
 }
 
 /**
-- 
1.6.0.6



Reply via email to