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)