nvme-tcp: io queue shutdown ordering
Jonathan Nicklin
jnicklin at blockbridge.com
Wed Jan 5 11:03:31 PST 2022
When disconnecting an nvme-tcp device using nvme cli (i.e., nvme
disconnect), nvme_tcp_teardown_ctrl() destroys I/O queues before
issuing the shutdown notification on the admin queue.
According to the fabrics spec version 1.1a section 1.5.2, an
association is terminated if an NVMe Transport connection is lost
between the host and controller for any I/O Queue when the host or
controller does not support individual I/O Queue deletion.
The initiator in mainline does not advertise support for I/O queue
deletion in the fabrics connect attributes (i.e., bit 3). Therefore,
termination of the association in response to connection loss of an
I/O queue should terminate the admin queue connection. This could
result in an inability to process the shutdown notification, causing a
disconnect request to hang until a timeout occurs.
Is this possibly a bug or my misunderstanding of the spec?
Thanks,
-Jonathan
More information about the Linux-nvme
mailing list