From: Neil Brown <neilb@suse.de>
To: Tejun Heo <tj@kernel.org>
Cc: Vladislav Bolkhovitin <vst@vlnb.net>,
Bryan Mesich <bryan.mesich@ndsu.edu>,
scst-devel@lists.sourceforge.net,
Jens Axboe <jens.axboe@oracle.com>,
linux-kernel@vger.kernel.org, linux-raid@vger.kernel.org,
dm-devel@redhat.com
Subject: Re: RAID/block regression starting from 2.6.32, bisected
Date: Mon, 2 Aug 2010 10:42:27 +1000 [thread overview]
Message-ID: <20100802104227.79340b49@notabene> (raw)
In-Reply-To: <4C52A98A.7060507@kernel.org>
On Fri, 30 Jul 2010 12:29:30 +0200
Tejun Heo <tj@kernel.org> wrote:
> Hello,
>
> On 07/28/2010 08:16 PM, Vladislav Bolkhovitin wrote:
> > In recent kernels we are experiencing a problem that in our setup
> > using SCST BLOCKIO backend some BIOs are finished, i.e. the finish
> > callback called for them, with error -EIO. It happens quite often,
> > much more often than one would expect to have an actual IO
> > error. (BLOCKIO backend just converts all incoming SCSI commands to
> > the corresponding block requests.)
> >
> > After some investigation, we figured out, that, most likely,
> > raid5.c::make_request() for some reason sometimes calls bio_endio()
> > with not BIO_UPTODATE bios.
> >
> > We bisected it to commit:
> >
> > commit a82afdfcb8c0df09776b6458af6b68fc58b2e87b
> > Author: Tejun Heo <tj@kernel.org>
> > Date: Fri Jul 3 17:48:16 2009 +0900
> >
> > block: use the same failfast bits for bio and request
>
> That commit doesn't (or at least isn't supposed to) make any behavior
> difference. It's just repositioning flag bits. If the commit is
> actually causing the problem, I think one possibility is that whatever
> code could be using hard coded constants which now are mapped to
> different flags. The mixed merge changes have been in mainline for
> quite some time and shipping in all major distros too and this is the
> first time this is reported, so I don't think it could be a widespread
> problem.
>
> Thanks.
>
The problem is that md/raid5 tests bio->bi_rw against RWA_MASK, which used to
align with BIO_RW_AHEAD, and now doesn't.
However the definition of bio_rw() in fs.h seems to justify that RWA_MASK
should align with BIO_RW_AHEAD, as does the definition of READA.
Given the current definitions, any WRITE request with BIO_RW_FAILFAST_DEV
set is going to confused a number of drives which test
bio_rw(bio) == WRITE
I guess RWA_MASK needs to be changed to (1<<BIO_RW_AHEAD), and READA need to
be change to that value too.
Can I leave that to you Tejun?
Thanks,
NeilBrown
next prev parent reply other threads:[~2010-08-02 0:42 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20100628010346.GA2376@atlantis.cc.ndsu.nodak.edu>
[not found] ` <4C28EFD6.2070203@vlnb.net>
[not found] ` <20100714190325.GA25148@atlantis.cc.ndsu.nodak.edu>
[not found] ` <4C3EF3AD.5070509@vlnb.net>
[not found] ` <20100723191844.GB31152@atlantis.cc.ndsu.nodak.edu>
[not found] ` <4C4D7DF5.9060909@vlnb.net>
[not found] ` <20100727220110.GF31152@atlantis.cc.ndsu.nodak.edu>
2010-07-28 18:16 ` RAID/block regression starting from 2.6.32, bisected Vladislav Bolkhovitin
2010-07-30 10:29 ` Tejun Heo
2010-08-02 0:42 ` Neil Brown [this message]
2010-08-02 14:12 ` [PATCH 1/2 block#for-linus] bio, fs: update READA and SWRITE to match the corresponding BIO_RW_* bits Tejun Heo
2010-08-02 14:13 ` [PATCH 2/2 block#for-linus] bio, fs: separate out bio_types.h and define READ/WRITE constants in terms of BIO_RW_* flags Tejun Heo
2010-08-02 14:15 ` [PATCH RESEND " Tejun Heo
2010-08-02 14:18 ` Tejun Heo
2010-08-02 14:15 ` [PATCH RESEND 1/2 block#for-linus] bio, fs: update READA and SWRITE to match the corresponding BIO_RW_* bits Tejun Heo
2010-08-02 21:52 ` Neil Brown
2010-08-03 9:27 ` Tejun Heo
2010-08-05 18:45 ` Jeff Moyer
2010-08-05 18:57 ` Vladislav Bolkhovitin
2010-08-05 19:30 ` Jeff Moyer
2010-08-06 4:04 ` Tao Ma
2010-08-06 6:29 ` Tejun Heo
2010-08-19 8:38 ` [dm-devel] " Christoph Hellwig
2010-08-02 14:17 ` Tejun Heo
2010-08-02 20:04 ` Jens Axboe
2010-08-03 9:53 ` [PATCH 1/2 block#for-2.6.36] bio, fs: update RWA_MASK, " Tejun Heo
2010-08-03 11:15 ` Jens Axboe
2010-08-03 11:21 ` Jens Axboe
2010-08-03 11:21 ` Jens Axboe
2010-08-03 15:52 ` Tejun Heo
2010-08-03 16:02 ` [PATCH] coda: rename REQ_* to CODA_REQ_* Tejun Heo
2010-08-03 16:11 ` Jan Harkes
2010-08-03 17:31 ` Jens Axboe
2010-08-03 9:54 ` [PATCH 2/2 block#for-2.6.36] bio, fs: separate out bio_types.h and define READ/WRITE constants in terms of BIO_RW_* flags Tejun Heo
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=20100802104227.79340b49@notabene \
--to=neilb@suse.de \
--cc=bryan.mesich@ndsu.edu \
--cc=dm-devel@redhat.com \
--cc=jens.axboe@oracle.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-raid@vger.kernel.org \
--cc=scst-devel@lists.sourceforge.net \
--cc=tj@kernel.org \
--cc=vst@vlnb.net \
/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.