[PATCH 1/3] nvme-fabrics: only reserve a single tag
Sagi Grimberg
sagi at grimberg.me
Mon Mar 15 17:12:43 GMT 2021
>>> 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.
You're right, admin commands will be noretry commands. this looks
good to me.
Reviewed-by: Sagi Grimberg <sagi at grimberg.me>
More information about the Linux-nvme
mailing list