[PATCH 08/10] block: provide a generic_make_request_fast helper

Sagi Grimberg sagi at grimberg.me
Mon Aug 28 04:01:16 PDT 2017


>>> This helper allows reinserting a bio into a new queue without much
>>> overhead, but requires all queue limits to be the same for the upper
>>> and lower queues, and it does not provide any recursion preventions,
>>> which requires the caller to not split the bio.
>>
>> Isn't the same limits constraint too restrictive?
>>
>> Say I have two paths to the same namespace via two different HBAs, each
>> with its own virt_boundary capability for example? That would require us
>> to split failover bio wouldn't it?
> 
> Uh oh - different transports for the same subsystem will be intereting.
> For one it's not specified anywhere so I'd like to kick off a discussion
> on the working group mailing list about it.

Indeed that would be interesting, but I wasn't referring to different
transports, even the same transport can have different capabilities
(for example CX4 and CX4 devices on the same host).

> That being said ->make_request basically doesn't care about actual
> limits at all, it mostly care about support features (e.g. discard, fua,
> etc).  So I think a lot of these limits could porbably be lifted,
> but I'd need to add the check to generic_make_request_checks back.

Different virt_boundary capabilities will trigger bio splits which
can make make_request blocking (due to lack of tags).



More information about the Linux-nvme mailing list