From: Tejun Heo <tj@kernel.org>
To: Jens Axboe <jens.axboe@oracle.com>,
Linux Kernel <linux-kernel@vger.kernel.org>,
James Bottomley <James.Bottomley@HansenPartnership.com>,
linux-scsi <linux-scsi@vger.kernel.org>,
Niel Lambrechts <niel.lambrechts@gmail.com>,
FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
Subject: [PATCHSET] block: fix merge of requests with different failfast settings
Date: Fri, 3 Jul 2009 17:48:14 +0900 [thread overview]
Message-ID: <1246610898-22350-1-git-send-email-tj@kernel.org> (raw)
Hello,
Block layer didn't consider failfast status while merging requests and
it led to premature failure of normal (non-failfast) IOs. Niel
Lambrechts could trigger the problem semi-reliably on ext4 when
resuming from STR. ext4 uses readahead when reading inodes and
combined with the deterministic extra SATA PHY exception cycle during
resume on the specific configuration, non-readahead inode read would
fail causing ext4 errors. Please read the following thread for
details.
http://lkml.org/lkml/2009/5/23/21
This patchset contains the following four patches to fix the problem.
0001-block-don-t-merge-requests-of-different-failfast-se.patch
0002-block-use-the-same-failfast-bits-for-bio-and-reques.patch
0003-block-implement-mixed-merge-of-different-failfast-r.patch
0004-scsi-block-update-SCSI-to-handle-mixed-merge-failur.patch
0001 disallows merge between requests with different failfast
settings. This one is the quick fix and should go into 2.6.31 and
later to -stable as the bug is pretty serious and may lead to data
loss.
0002 preps for later changes.
0003-0004 implements and applies mixed merge. Requests of different
failfast settings are merged as before but failure handling is updated
such that parts which shouldn't fail without retrial are properly
retried.
I spent quite some time thinking about and testing it but I'd really
like more pairs of eyes on this patchset as dangerous bugs can go
unnoticed for quite a while in this area (anyone knows when the
failfast bug was introduced?).
Jens, I think the best way to merge this is to first push 0001 to
Linus's tree and then pull it into for-next and then apply the rest on
top of them.
This patchset contains the following changes.
block/blk-core.c | 118 +++++++++++++++++++++++++++++++++++++++++++-----
block/blk-merge.c | 43 +++++++++++++++++
block/blk.h | 1
drivers/scsi/scsi_lib.c | 6 +-
include/linux/bio.h | 43 +++++++++--------
include/linux/blkdev.h | 27 ++++++++--
6 files changed, 199 insertions(+), 39 deletions(-)
Thanks.
--
tejun
next reply other threads:[~2009-07-03 8:48 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-07-03 8:48 Tejun Heo [this message]
2009-07-03 8:48 ` [PATCH 1/4] block: don't merge requests of different failfast settings Tejun Heo
2009-07-03 8:48 ` [PATCH 2/4] block: use the same failfast bits for bio and request Tejun Heo
2009-07-05 9:27 ` Boaz Harrosh
2009-07-09 0:45 ` Tejun Heo
2009-07-09 9:12 ` Boaz Harrosh
2009-07-09 13:37 ` Christoph Hellwig
2009-07-09 17:20 ` Jeff Garzik
2009-07-09 17:39 ` Jens Axboe
2009-07-10 13:18 ` Tejun Heo
2009-07-12 12:06 ` Boaz Harrosh
2009-07-15 9:27 ` Tejun Heo
2009-07-03 8:48 ` [PATCH 3/4] block: implement mixed merge of different failfast requests Tejun Heo
2009-07-05 9:27 ` Boaz Harrosh
2009-07-09 0:47 ` Tejun Heo
2009-07-09 9:17 ` Boaz Harrosh
2009-07-15 9:41 ` Tejun Heo
2009-07-03 8:48 ` [PATCH 4/4] scsi,block: update SCSI to handle mixed merge failures Tejun Heo
2009-07-03 10:54 ` [PATCHSET] block: fix merge of requests with different failfast settings Jens Axboe
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=1246610898-22350-1-git-send-email-tj@kernel.org \
--to=tj@kernel.org \
--cc=James.Bottomley@HansenPartnership.com \
--cc=fujita.tomonori@lab.ntt.co.jp \
--cc=jens.axboe@oracle.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-scsi@vger.kernel.org \
--cc=niel.lambrechts@gmail.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox