Re: [PATCH V4] blk-mq: introduce BLK_STS_DEV_RESOURCE
From: Ming Lei <tom.leiming@gmail.com>
Date: 2018-01-30 03:20:49
Also in:
dm-devel, linux-nvme, linux-scsi
From: Ming Lei <tom.leiming@gmail.com>
Date: 2018-01-30 03:20:49
Also in:
dm-devel, linux-nvme, linux-scsi
On Tue, Jan 30, 2018 at 5:51 AM, Bart Van Assche [off-list ref] wrote:
On Mon, 2018-01-29 at 16:44 -0500, Mike Snitzer wrote:quoted
But regardless of which wins the race, the queue will have been run. Which is all we care about right?Running the queue is not sufficient. With this patch applied it can happen that the block driver returns BLK_STS_DEV_RESOURCE, that the two or more concurrent queue runs finish before sufficient device resources are available to execute the request and that blk_mq_delay_run_hw_queue() does not get called at all. If no other activity triggers a queue run, e.g. request completion, this will result in a queue stall.
Please see document of BLK_STS_DEV_RESOURCE: + * BLK_STS_DEV_RESOURCE is returned from driver to block layer if device + * related resource is unavailable, but driver can guarantee that queue + * will be rerun in future once the resource is available (whereby + * dispatching requests). I have explained the SCSI's BLK_STS_DEV_RESOURCE conversion in another thread, let's know if you have further concern: https://marc.info/?l=linux-block&m=151727454815018&w=2 -- Ming Lei