From: Jeff Mahoney <jeffm@suse.com>
To: linux-fsdevel@vger.kernel.org, ext2-devel@lists.sourceforge.net
Subject: [PATCH] ext3: ext3_commit_super should always mark super uptodate
Date: Tue, 16 Dec 2008 13:13:34 -0500 [thread overview]
Message-ID: <4947EFCE.8020605@suse.com> (raw)
-----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@suse.com>
- ---
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-----
next reply other threads:[~2008-12-16 18:13 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-12-16 18:13 Jeff Mahoney [this message]
2008-12-19 15:41 ` [PATCH] ext3: ext3_commit_super should always mark super uptodate Phillip Susi
2008-12-19 15:46 ` Jeff Mahoney
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=4947EFCE.8020605@suse.com \
--to=jeffm@suse.com \
--cc=ext2-devel@lists.sourceforge.net \
--cc=linux-fsdevel@vger.kernel.org \
/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.