Thread (54 messages) 54 messages, 9 authors, 2018-07-19

Re: [PATCH 2/2] blkdev: __blkdev_direct_IO_simple: make sure to fill up the bio

From: Martin Wilck <hidden>
Date: 2018-07-19 19:21:47

On Thu, 2018-07-19 at 17:11 +0200, Christoph Hellwig wrote:
On Thu, Jul 19, 2018 at 05:06:42PM +0200, Jan Kara wrote:
quoted
Yeah. Actually previous version of the fix (not posted publicly)
submitted
partial bio and then reused the bio to submit more. This is also
the way
__blkdev_direct_IO operates. Martin optimized this to fill the
bio
completely (as we know we have enough bvecs) before submitting
which has
chances to perform better. I'm fine with either approach, just we
have to
decide which way to go.
I think this first version is going to be less fragile, so I we
should
aim for that.
Wait a second. We changed the approach for a reason. By submitting
partial bios synchronously and sequentially, we loose a lot of
performance, so much that this "fast path" quickly falls behind the
regular __blkkdev_direct_IO() path as the number of input IO segments
increases. The patch I submitted avoids that. The whole point of this
fast path is to submit a single bio, and return as quickly as possible.

It's not an error condition if bio_iov_iter_get_pages() returns less
data than possible. The function just takes one iteration step at a
time, and thus iterating over it until the desired number of pages is
obtained, and collecting the resulting pages in a single bio, isn't
"fragile", it's just the natural thing to do.

Martin

-- 
Dr. Martin Wilck [off-list ref], Tel. +49 (0)911 74053 2107
SUSE Linux GmbH, GF: Felix Imendörffer, Jane Smithard, Graham Norton
HRB 21284 (AG Nürnberg)
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help