mbox series

[V3,00/10] block: enable multi-page bvec for passthrough IO

Message ID 20190329070803.10958-1-ming.lei@redhat.com (mailing list archive)
Headers show
Series block: enable multi-page bvec for passthrough IO | expand

Message

Ming Lei March 29, 2019, 7:07 a.m. UTC
Hi,

Now the whole IO stack is capable of handling multi-page bvec, and it has
been enabled in the normal FS IO path. However, it isn't done for
passthrough IO.

Without enabling multi-bvec for passthough IO, we won't go ahead for
optimizing related IO paths, such as bvec merging, bio_add_pc_page
simplification.

This patch enables multi-page bvec for passthrough IO. Turns out
bio_add_pc_page() is simpliefied a lot, especially the physical segment
number of passthrough bio is always same with bio.bi_vcnt. Also the
bvec merging inside bio is killed.

blktests(block/029) is added for covering passthough IO path, and this
patchset does pass the new block/029 test.

V3:
	- fix build warning on patch 1 and 7, only the two patches are
	  changed

V2:
	- add new patch of 'block: avoid to break XEN by multi-page bvec'
	- add one new patch to cleanup bio_add_pc_page()
	- add another two new patches for cleanup of mapping bvec to sg
	- most of others are patch style changes


Ming Lei (10):
  block: pass page to xen_biovec_phys_mergeable
  block: avoid to break XEN by multi-page bvec
  block: don't merge adjacent bvecs to one segment in bio
    blk_queue_split
  block: cleanup bio_add_pc_page
  block: check if page is mergeable in one helper
  block: put the same page when adding it to bio
  block: enable multi-page bvec for passthrough IO
  block: remove argument of 'request_queue' from __blk_bvec_map_sg
  block: reuse __blk_bvec_map_sg() for mapping page sized bvec
  block: don't check if adjacent bvecs in one bio can be mergeable

 block/bio.c            | 134 ++++++++++++++++++++++++++++---------------------
 block/blk-merge.c      | 106 +++++++++++++++++++-------------------
 block/blk.h            |   2 +-
 drivers/xen/biomerge.c |   5 +-
 include/linux/bio.h    |   3 ++
 include/xen/xen.h      |   4 +-
 6 files changed, 137 insertions(+), 117 deletions(-)

Comments

Jens Axboe March 29, 2019, 2:20 p.m. UTC | #1
On 3/29/19 1:07 AM, Ming Lei wrote:
> Hi,
> 
> Now the whole IO stack is capable of handling multi-page bvec, and it has
> been enabled in the normal FS IO path. However, it isn't done for
> passthrough IO.
> 
> Without enabling multi-bvec for passthough IO, we won't go ahead for
> optimizing related IO paths, such as bvec merging, bio_add_pc_page
> simplification.
> 
> This patch enables multi-page bvec for passthrough IO. Turns out
> bio_add_pc_page() is simpliefied a lot, especially the physical segment
> number of passthrough bio is always same with bio.bi_vcnt. Also the
> bvec merging inside bio is killed.
> 
> blktests(block/029) is added for covering passthough IO path, and this
> patchset does pass the new block/029 test.
> 
> V3:
> 	- fix build warning on patch 1 and 7, only the two patches are
> 	  changed

Please just send me an incremental fix for those two patches, v2 has
been in my tree for a while now. I can rebase it since I haven't pushed
out, but doing so incrementally is a lot more convenient than replacing
the entire series.
Jens Axboe March 29, 2019, 2:22 p.m. UTC | #2
On 3/29/19 8:20 AM, Jens Axboe wrote:
> On 3/29/19 1:07 AM, Ming Lei wrote:
>> Hi,
>>
>> Now the whole IO stack is capable of handling multi-page bvec, and it has
>> been enabled in the normal FS IO path. However, it isn't done for
>> passthrough IO.
>>
>> Without enabling multi-bvec for passthough IO, we won't go ahead for
>> optimizing related IO paths, such as bvec merging, bio_add_pc_page
>> simplification.
>>
>> This patch enables multi-page bvec for passthrough IO. Turns out
>> bio_add_pc_page() is simpliefied a lot, especially the physical segment
>> number of passthrough bio is always same with bio.bi_vcnt. Also the
>> bvec merging inside bio is killed.
>>
>> blktests(block/029) is added for covering passthough IO path, and this
>> patchset does pass the new block/029 test.
>>
>> V3:
>> 	- fix build warning on patch 1 and 7, only the two patches are
>> 	  changed
> 
> Please just send me an incremental fix for those two patches, v2 has
> been in my tree for a while now. I can rebase it since I haven't pushed
> out, but doing so incrementally is a lot more convenient than replacing
> the entire series.

Actually, I can just replace those two, that's easy enough. Done.