[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