Re: [PATCH 01/11] blk-mq: Add blk_mq_init_queue_ops()

From: John Garry
Date: Wed Mar 23 2022 - 05:01:45 EST


On 23/03/2022 02:57, Bart Van Assche wrote:
On 3/22/22 03:39, John Garry wrote:
Add an API to allocate a request queue which accepts a custom set of
blk_mq_ops for that request queue.

The reason which we may want custom ops is for queuing requests which we
don't want to go through the normal queuing path.


Hi Bart,

> Custom ops shouldn't be required for this. See e.g. how tmf_queue
> is used in the UFS driver for an example of a queue implementation
> with custom operations and that does not require changes of the block
> layer core.

The UFS code uses a private tagset (in ufs_hba.tmf_tag_set) for only management of TMF tags/memories. This tagset does not really have any custom operations. All it has is a stub of .queue_rq CB in ufshcd_queue_tmf() and that is because this CB is compulsory.

As for the idea of having multiple tagsets per shost with real custom operations, this idea was mentioned before, but I think managing multiple tagsets could be trouble. For a start, it would mean that we need a distinct allocation of reserved and regular tags, and sometimes we don't want this - as Hannes mentioned earlier, many HBAs have low queue depth and cannot afford to permanently carve out a bunch of reserved tags.

Thanks,
John