[dm-devel] [PATCH V4] blk-mq: introduce BLK_STS_DEV_RESOURCE

Bart Van Assche Bart.VanAssche at wdc.com
Thu Feb 1 16:53:51 PST 2018


On Thu, 2018-02-01 at 19:26 -0500, John Stoffel wrote:
> Doesn't this argue that you really want some sort of completions to be
> run in this case instead?  Instead of busy looping or waiting for a
> set amount of time, just fire off a callback to run once you have the
> resources available, no?

Hello John,

Rerunning the queue when the resource we ran out of is available again would
be ideal. However, I'm not sure it is possible to implement this. If a driver
performs memory allocation while executing a request and kmalloc() returns
-ENOMEM then I don't know which mechanism should be used to trigger a queue
rerun when sufficient memory is available again.

Another example is the SCSI subsystem. If a the .queuecommand() implementation
of a SCSI LLD returns SCSI_MLQUEUE_*_BUSY because a certain HBA condition
occurred and the HBA does not trigger an interrupt when that condition is
cleared, how to figure out whether or not a request can be executed other than
by retrying, which means rerunning the queue?

Thanks,

Bart.


More information about the Linux-nvme mailing list