[PATCH v3 0/3] Handle number of queue changes

Daniel Wagner dwagner at suse.de
Wed Aug 31 02:05:05 PDT 2022


On Mon, Aug 29, 2022 at 11:44:41AM -0700, James Smart wrote:
> Since you're in the area....
> 
> I recommend adding something to ensure that after a reconnect that if I/O
> queues were present in the prior association, the new controller must return
> support for at least 1 io queue or the reconnect fails and retries. This was
> a bug we hit on a subsystem in FC.

I suppose this is the fix for the problem you describe:

  834d3710a093 ("nvme-fc: reject reconnect if io queue count is reduced to zero")

A test with v4 gives this

 nvmet: adding nsid 1 to subsystem blktests-subsystem-1
 nvmet_tcp: enabling port 0 (127.0.0.1:4420)
 nvmet: creating nvm controller 1 for subsystem blktests-subsystem-1 for NQN nqn.2014-08.org.nvmexpress:uuid:.
 nvme nvme1: creating 8 I/O queues.
 nvme nvme1: mapped 8/0/0 default/read/poll queues.
 nvme nvme1: new ctrl: NQN "blktests-subsystem-1", addr 127.0.0.1:4420
 nvmet: remove subystem from port
 nvme nvme1: failed to send request -32
 nvme nvme1: failed nvme_keep_alive_end_io error=4
 nvme nvme1: starting error recovery
 nvme nvme1: Reconnecting in 10 seconds...
 nvmet: set qid_max to 0
 nvmet_tcp: enabling port 0 (127.0.0.1:4420)
 nvmet: creating nvm controller 1 for subsystem blktests-subsystem-1 for NQN nqn.2014-08.org.nvmexpress:uuid:.
 nvme nvme1: creating 1 I/O queues.
 nvmet: invalid queue id (1)
 nvme nvme1: Connect Invalid SQE Parameter, qid 1
 nvme nvme1: failed to connect queue: 1 ret=16770
 nvme nvme1: Failed reconnect attempt 1
 nvme nvme1: Reconnecting in 10 seconds...
 nvmet: remove subsystem from port
 nvme nvme1: failed to connect socket: -111
 nvme nvme1: Failed reconnect attempt 2
 nvme nvme1: Reconnecting in 10 seconds...
 nvmet: set qid_max to 2
 nvmet_tcp: enabling port 0 (127.0.0.1:4420)
 nvmet: creating nvm controller 1 for subsystem blktests-subsystem-1 for NQN nqn.2014-08.org.nvmexpress:uuid:.
 nvme nvme1: creating 2 I/O queues.
 nvme nvme1: mapped 2/0/0 default/read/poll queues.
 nvme nvme1: Successfully reconnected (3 attempt)

It looks like the host is able to recover correctly even though the IO
queue count is 0.



More information about the Linux-nvme mailing list