diff options
author | Hannes Reinecke <hare@suse.de> | 2024-04-30 15:19:27 +0200 |
---|---|---|
committer | Keith Busch <kbusch@kernel.org> | 2024-05-01 03:07:20 -0700 |
commit | adfde7ed0b301ef14c37efe3143a8b26849843f6 (patch) | |
tree | fd7a2de3ccd1e1514cfba3c6a6ef7b88b372ac82 /drivers/nvme/host/fc.c | |
parent | 44350336fd9dab7a337dec686978a160cf1abfc5 (diff) | |
download | lwn-adfde7ed0b301ef14c37efe3143a8b26849843f6.tar.gz lwn-adfde7ed0b301ef14c37efe3143a8b26849843f6.zip |
nvme-fabrics: short-circuit reconnect retries
Returning a nvme status from nvme_tcp_setup_ctrl() indicates that the
association was established and we have received a status from the
controller; consequently we should honour the DNR bit. If not any future
reconnect attempts will just return the same error, so we can
short-circuit the reconnect attempts and fail the connection directly.
Signed-off-by: Hannes Reinecke <hare@suse.de>
[dwagner: - extended nvme_should_reconnect]
Signed-off-by: Daniel Wagner <dwagner@suse.de>
Signed-off-by: Keith Busch <kbusch@kernel.org>
Diffstat (limited to 'drivers/nvme/host/fc.c')
-rw-r--r-- | drivers/nvme/host/fc.c | 4 |
1 files changed, 1 insertions, 3 deletions
diff --git a/drivers/nvme/host/fc.c b/drivers/nvme/host/fc.c index 68a5d971657b..b330a6a7b63a 100644 --- a/drivers/nvme/host/fc.c +++ b/drivers/nvme/host/fc.c @@ -3310,12 +3310,10 @@ nvme_fc_reconnect_or_delete(struct nvme_fc_ctrl *ctrl, int status) dev_info(ctrl->ctrl.device, "NVME-FC{%d}: reset: Reconnect attempt failed (%d)\n", ctrl->cnum, status); - if (status > 0 && (status & NVME_SC_DNR)) - recon = false; } else if (time_after_eq(jiffies, rport->dev_loss_end)) recon = false; - if (recon && nvmf_should_reconnect(&ctrl->ctrl)) { + if (recon && nvmf_should_reconnect(&ctrl->ctrl, status)) { if (portptr->port_state == FC_OBJSTATE_ONLINE) dev_info(ctrl->ctrl.device, "NVME-FC{%d}: Reconnect attempt in %ld " |