On Fri, Oct 20, 2023 at 09:45:53AM -0700, Bart Van Assche wrote: > > On 10/20/23 09:25, Keith Busch wrote: > > The legacy block request layer didn't have a tag resource shared among > > multiple request queues. Each queue had their own mempool for allocating > > requests. The mempool, I think, would always guarantee everyone could > > get at least one request. > > I think that the above is irrelevant in this context. As an example, SCSI > devices have always shared a pool of tags across multiple logical > units. This behavior has not been changed by the conversion of the > SCSI core from the legacy block layer to blk-mq. > > For other (hardware) block devices it didn't matter either that there > was no upper limit to the number of requests the legacy block layer > could allocate. All hardware block devices I know support fixed size > queues for queuing requests to the block device. I am not sure I understand your point. Those lower layers always were able to get at least one request per request_queue. They can do whatever they want with it after that. This change removes that guarantee for blk-mq in some cases, right? I just don't think you can readily conclude that is "safe" by appealing to the legacy behavior, that's all.