From: Kent Overstreet <kent.overstreet@gmail.com>
To: Christoph Hellwig <hch@lst.de>
Cc: Linus Torvalds <torvalds@linux-foundation.org>,
Ming Lin <ming.l@ssi.samsung.com>, Jens Axboe <axboe@fb.com>,
"Artem S. Tashkinov" <t.artem@mailcity.com>,
Steven Whitehouse <swhiteho@redhat.com>,
Tejun Heo <tj@kernel.org>, IDE-ML <linux-ide@vger.kernel.org>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>
Subject: Re: IO errors after "block: remove bio_get_nr_vecs()"
Date: Sun, 20 Dec 2015 09:44:04 -0900 [thread overview]
Message-ID: <20151220184404.GA18035@kmo-pixel> (raw)
In-Reply-To: <20151220181801.GA12402@lst.de>
On Sun, Dec 20, 2015 at 07:18:01PM +0100, Christoph Hellwig wrote:
> On Sun, Dec 20, 2015 at 09:51:14AM -0800, Linus Torvalds wrote:
> > Kent, Jens, Christoph et al,
> ie please see this bugzilla:
> >o
> > httpps://bugzilla.kernel.org/show_bug.cgi?id=109661
> >
> > where Artem Tashkinov bisected his problems with 4.3 down to commit
> > b54ffb73cadc ("block: remove bio_get_nr_vecs()") that you've all
> > signed off on.
>
> Artem,
>
> can you re-check the commits around this series again? I would be
> extremtly surprised if it's really this particular commit and not
> one just before it causing the problem - it just allocates bios
> to the biggest possible instead of only allocating up to what
> bio_add_page would accept.
pretty sure it's something with how blk_bio_segment_split() decides what
segments are mergable and not. bio_get_nr_vecs() was just returning nr_pages ==
queue_max_segments (ignoring sectors for the moment) - so wait, wtf? that's
basically assuming no segment merging can ever happen, if it does then this was
causing us to send smaller requests to the device than we could have been.
so actually two possibilities I can see:
- in blk_bio_segment_split(), something's screwed up with how it decides what
segments are going to be mergable or not. but I don't think that's likely
since it's doing the exact same thing the rest of the segment merging code
does.
- or, the driver was lying in its queue limits, using queue_max_segments for
"the maximum number of pages I can possibly take", and that bug lurked
undiscovered because of the screwed-upness in bio_get_nr_vecs().
Offhand I don't know where to start digging in the driver code to look into the
second theory though. Tejun, you got any ideas?
next prev parent reply other threads:[~2015-12-20 18:44 UTC|newest]
Thread overview: 45+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-12-20 17:51 IO errors after "block: remove bio_get_nr_vecs()" Linus Torvalds
2015-12-20 18:18 ` Christoph Hellwig
2015-12-20 18:41 ` Linus Torvalds
2015-12-20 23:36 ` Artem S. Tashkinov
2015-12-21 11:21 ` Dan Aloni
2015-12-20 18:44 ` Kent Overstreet [this message]
2015-12-20 23:41 ` Artem S. Tashkinov
2015-12-20 23:25 ` Artem S. Tashkinov
2015-12-20 23:42 ` Kent Overstreet
2015-12-20 23:49 ` Artem S. Tashkinov
2015-12-20 23:23 ` Artem S. Tashkinov
2015-12-21 1:38 ` Ming Lei
2015-12-21 1:50 ` Artem S. Tashkinov
2015-12-21 2:18 ` Ming Lei
2015-12-21 2:25 ` Artem S. Tashkinov
2015-12-21 2:32 ` Kent Overstreet
2015-12-21 3:21 ` Ming Lei
2015-12-21 3:36 ` Artem S. Tashkinov
2015-12-21 4:32 ` Linus Torvalds
2015-12-21 4:43 ` Artem S. Tashkinov
2015-12-21 4:47 ` Linus Torvalds
2015-12-21 5:23 ` Linus Torvalds
2015-12-21 7:31 ` Artem S. Tashkinov
2015-12-22 4:06 ` Artem S. Tashkinov
2015-12-21 4:26 ` Tejun Heo
2015-12-21 5:10 ` Linus Torvalds
2015-12-21 6:55 ` Tejun Heo
2015-12-21 7:25 ` Artem S. Tashkinov
2015-12-21 19:35 ` Tejun Heo
2015-12-21 20:07 ` Tejun Heo
2015-12-21 21:08 ` Tejun Heo
2015-12-22 3:43 ` Kent Overstreet
2015-12-22 3:59 ` Kent Overstreet
2015-12-22 5:26 ` Junichi Nomura
2015-12-22 5:37 ` Kent Overstreet
2015-12-22 5:38 ` Kent Overstreet
2015-12-22 5:52 ` Artem S. Tashkinov
2015-12-22 5:55 ` Kent Overstreet
2015-12-22 5:59 ` Artem S. Tashkinov
2015-12-22 6:02 ` Kent Overstreet
2015-12-22 17:28 ` Jens Axboe
2015-12-22 4:45 ` Kent Overstreet
2015-12-22 5:10 ` Artem S. Tashkinov
2015-12-22 5:20 ` Artem S. Tashkinov
2015-12-21 22:51 ` Ming Lei
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=20151220184404.GA18035@kmo-pixel \
--to=kent.overstreet@gmail.com \
--cc=axboe@fb.com \
--cc=hch@lst.de \
--cc=linux-ide@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=ming.l@ssi.samsung.com \
--cc=swhiteho@redhat.com \
--cc=t.artem@mailcity.com \
--cc=tj@kernel.org \
--cc=torvalds@linux-foundation.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