[PATCH 1/3] nvme-fabrics: only reserve a single tag

Christoph Hellwig hch at lst.de
Sat Mar 6 07:09:44 GMT 2021


On Fri, Mar 05, 2021 at 12:51:15PM -0800, Sagi Grimberg wrote:
>
>> Fabrics drivers currently reserve two tags on the admin queue.  But
>> given that the connect command is only run on a freshly created queue
>> or after all commands have been force aborted we only need to reserve
>> a single tag.
>
> Umm, I think this would be an issue for non-mpath fabrics devices...
>
> When we teardown the controller, we iterate over all tags
> and cancel them, however for non-mpath devices these actually
> stick around until they exhaust the retrys counter (with the
> hope that the controller will reconnect again) unlike the mpath
> case where the requests are failed-over.
>
> Now if the admin queue is absolutely full during a reset, we won't
> have a keep-alive command.
>
> One possible solution is to make sure that
> nvme_decide_disposition to complete a request for admin
> commands. However note that this means that admin commands
> would fail immediately when the controller resets, which is
> a regression from the existing behavior and we may piss off
> users with that...

We never retry admin commands!  And the reserved tags are set aside
and not relevant to the "normal" commands.



More information about the Linux-nvme mailing list