[PATCH] ext3: ext3_commit_super should always mark super uptodate

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

 After a superblock write failure, the buffer_head is marked !uptodate.
 Since the superblock is something of an exception -- read once and
 a reference kept for the duration of the mount -- it is by definition
 always uptodate.

 This is somewhat academic for the most part until we encounter error
 conditions. For example, if a disk goes away in a SAN environment, the
 write failure will occur and it will be followed by others. ext3_error
 wants to mark the superblock dirty via ext3_commit_super, but once
 the first write fails, the subsequent mark_buffer_dirty calls will
 issue warnings because the buffer is not uptodate.

 This patch silences those warnings by marking it uptodate in
 ext3_commit_super before calling mark_buffer_dirty. This doesn't really
 change anything other than silencing the warning in mark_buffer_dirty.
 If the write succeeds, good. Otherwise, it will just have uptodate
 cleared again.

Signed-off-by: Jeff Mahoney <jeffm@xxxxxxxx>
- ---
 fs/ext3/super.c |    7 +++++++
 1 file changed, 7 insertions(+)

- --- a/fs/ext3/super.c
+++ b/fs/ext3/super.c
@@ -2291,6 +2291,13 @@ static void ext3_commit_super (struct su
 	es->s_free_blocks_count = cpu_to_le32(ext3_count_free_blocks(sb));
 	es->s_free_inodes_count = cpu_to_le32(ext3_count_free_inodes(sb));
 	BUFFER_TRACE(sbh, "marking dirty");
+
+	/* We only read the superblock once. The in-memory version is
+	 * always the most recent. If ext3_error is called after a
+	 * superblock write failure, it will be !uptodate. This write
+	 * will likely fail also, but it avoids the WARN_ON in
+	 * mark_buffer_dirty. */
+	set_buffer_uptodate(sbh);
 	mark_buffer_dirty(sbh);
 	if (sync)
 		sync_dirty_buffer(sbh);

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.9 (GNU/Linux)
Comment: Using GnuPG with SUSE - http://enigmail.mozdev.org

iEYEARECAAYFAklH784ACgkQLPWxlyuTD7LsHgCeJjBBmkTeB4ZAxPL0TY7qhRO7
6c8Anj/MbtPcAXBqCdYMFCqcj8Rjl1gI
=2LYo
-----END PGP SIGNATURE-----
--
To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Ext4 Filesystem]     [Union Filesystem]     [Filesystem Testing]     [Ceph Users]     [Ecryptfs]     [AutoFS]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux Cachefs]     [Reiser Filesystem]     [Linux RAID]     [Samba]     [Device Mapper]     [CEPH Development]
  Powered by Linux