From: "Theodore Y. Ts'o" <tytso@mit.edu>
To: dann frazier <dann.frazier@canonical.com>
Cc: Andreas Dilger <adilger@dilger.ca>,
linux-ext4@vger.kernel.org, Jan Kara <jack@suse.com>,
Colin King <colin.king@canonical.com>,
Ryan Harper <ryan.harper@canonical.com>
Subject: Re: ext4 fsck vs. kernel recovery policy
Date: Thu, 29 Aug 2019 21:22:36 -0400 [thread overview]
Message-ID: <20190830012236.GC10779@mit.edu> (raw)
In-Reply-To: <20190829225348.GA13045@xps13.dannf>
(Changing the cc from linux-fsdevel to linux-ext4.)
On Thu, Aug 29, 2019 at 04:53:48PM -0600, dann frazier wrote:
> JBD2: Invalid checksum recovering data block 517634 in log
>
> So is it correct to say that the checksum errors were identifying
> filesystem correctness issues, and therefore e2fsck was needed to
> correct them?
That's correct. More precisely, checksum errors for journal blocks
are presumed to mean that file system might be corrupt, so a full
e2fsck check was needed to make sure the file system was consistent.
> You're probably right - this issue is very easy to reproduce w/
> data=journal,journal_checksum. I was never able to reproduce it
> otherwise.
I've looked at the data block numbers that you've reported, and they
come from a journald file. The problem is with data=journal +
journal_checksum + mmap. Unfortunately, we don't handle that
combination correctly at the moment.
The fix is going to have to involve fixing __ext4_journalled_writepage()
to call set_page_writeback() before it unlocks the page, adding a list of
pages under data=journalled writeback which is attached to the
transaction handle, have the jbd2 commit hook call end_page_writeback()
on all of these pages, and then in the places where ext4 calls
wait_for_stable_page() or grab_cache_page_write_begin(),
we need to add:
if (ext4_should_journal_data(inode))
wait_on_page_writeback(page);
It's all relatively straightforward except for the part where we have to
attach a list of pages to the currently running transaction. That
will require adding some plumbing into the jbd2 layer.
Dann, any interest in trying to code this fix?
- Ted
next prev parent reply other threads:[~2019-08-30 1:22 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-08-27 19:10 ext4 fsck vs. kernel recovery policy dann frazier
2019-08-27 20:27 ` Andreas Dilger
2019-08-29 22:53 ` dann frazier
2019-08-30 1:22 ` Theodore Y. Ts'o [this message]
2019-09-04 14:58 ` dann frazier
2019-12-21 20:26 ` mfo
2019-12-21 20:26 ` [RFC 1/1] ext4: set page writeback on journalled writepage mfo
2020-01-27 11:34 ` Re: ext4 fsck vs. kernel recovery policy Mauricio Faria de Oliveira
2019-08-27 20:29 ` Eric Sandeen
2019-08-27 21:39 ` Eric Sandeen
2019-08-29 23:50 ` dann frazier
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=20190830012236.GC10779@mit.edu \
--to=tytso@mit.edu \
--cc=adilger@dilger.ca \
--cc=colin.king@canonical.com \
--cc=dann.frazier@canonical.com \
--cc=jack@suse.com \
--cc=linux-ext4@vger.kernel.org \
--cc=ryan.harper@canonical.com \
/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.