[PATCH for-4.4] block: split bios to max possible length

Ming Lei tom.leiming at gmail.com
Tue Jan 5 22:53:22 PST 2016


On Wed, Jan 6, 2016 at 2:29 PM, Ming Lei <tom.leiming at gmail.com> wrote:
> On Wed, Jan 6, 2016 at 1:51 PM, Keith Busch <keith.busch at intel.com> wrote:
>> On Wed, Jan 06, 2016 at 10:17:51AM +0800, Ming Lei wrote:
>>> Firstly we didn't split one single bio vector before bio splitting.
>>>
>>> Secondly, current bio split still doesn't support to split one single
>>> bvec into two, and it just makes the two bios shared the original
>>> bvec table, please see bio_split(), which calls bio_clone_fast()
>>> to do that, and the bvec table has been immutable at that time.
>>
>> You are saying we can't split a bio in the middle of a vector?
>
> I mean the current block stack may not be ready for that.
>
>> bvec_iter_advance() says we can split anywhere.
>
> bvec_iter_advance() can split anywhere, but the splitted bios may
> cross one same bvec, which may cause trouble, for example,
> BIOVEC_PHYS_MERGEABLE() may not work well and
> blk_phys_contig_segment() too.

blk_rq_map_sg() isn't ready for splitting in the middle of bvec too.

Thanks,



More information about the Linux-nvme mailing list