[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