-----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