nvme-rdma: remove timeout for getting RDMA-CM established event
authorIsrael Rukshin <israelr@nvidia.com>
Sun, 15 May 2022 15:04:40 +0000 (18:04 +0300)
committerChristoph Hellwig <hch@lst.de>
Tue, 12 Jul 2022 15:34:35 +0000 (17:34 +0200)
commit6c16bb03731017adb66e6bf234e6ebd4a64fa926
tree391f8f156ac70f168d6a6abfd091fe4c5782919a
parent375e2143d8f411c181eb630dd2f27a21e5a1a6e9
nvme-rdma: remove timeout for getting RDMA-CM established event

In case many controllers start error recovery at the same time (i.e.,
when port is down and up), they may never succeed to reconnect again.
This is because the target can't handle all the connect requests at
three seconds (the arbitrary value set today). Even if some of the
connections are established, when a single queue fails to connect,
all the controller's queues are destroyed as well. So, on the
following reconnection attempts the number of connect requests may
remain the same. To fix this, remove the timeout and wait for RDMA-CM
event to abort/complete the connect request. RDMA-CM sends unreachable
event when a timeout of ~90 seconds is expired. This approach is used
at other RDMA-CM users like SRP and iSER at blocking mode. The commit
also renames NVME_RDMA_CONNECT_TIMEOUT_MS to NVME_RDMA_CM_TIMEOUT_MS.

Signed-off-by: Israel Rukshin <israelr@nvidia.com>
Reviewed-by: Max Gurtovoy <mgurtovoy@nvidia.com>
Acked-by: Sagi Grimberg <sagi@grimberg.me>
Signed-off-by: Christoph Hellwig <hch@lst.de>
drivers/nvme/host/rdma.c