From: Josef Bacik <josef@toxicpanda.com>
To: linux-btrfs@vger.kernel.org, kernel-team@fb.com
Subject: [PATCH 0/2] Metadata IO error fixes
Date: Wed, 24 Nov 2021 12:37:16 -0500 [thread overview]
Message-ID: <cover.1637775291.git.josef@toxicpanda.com> (raw)
Hello,
I saw a dmesg failure with generic/281 on our overnight runs. This turned out
to be because we weren't getting an error back from btrfs_search_slot() even
though we found a metadata block that shouldn't have been uptodate.
The root cause is that write errors on the page clear uptodate on the page, but
not on the extent buffer itself. Since we rely on that bit to tell wether the
extent buffer is valid or not we don't notice that the eb is bogus when we find
it in cache in a subsequent write, and eventually trip over
assert_eb_page_uptodate() warnings.
This fixes the problem I was seeing, I could easily reproduce by running
generic/281 in a loop a few times. With these pages I haven't reproduced in 20
loops. Thanks,
Josef
Josef Bacik (2):
btrfs: clear extent buffer uptodate when we fail to write it
btrfs: check the root node for uptodate before returning it
fs/btrfs/ctree.c | 19 +++++++++++++++----
fs/btrfs/extent_io.c | 6 ++++++
2 files changed, 21 insertions(+), 4 deletions(-)
--
2.26.3
next reply other threads:[~2021-11-24 17:37 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-11-24 17:37 Josef Bacik [this message]
2021-11-24 17:37 ` [PATCH 1/2] btrfs: clear extent buffer uptodate when we fail to write it Josef Bacik
2021-11-25 8:50 ` Nikolay Borisov
2021-11-24 17:37 ` [PATCH 2/2] btrfs: check the root node for uptodate before returning it Josef Bacik
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=cover.1637775291.git.josef@toxicpanda.com \
--to=josef@toxicpanda.com \
--cc=kernel-team@fb.com \
--cc=linux-btrfs@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox