diff --git a/lib/nvme/nvme_internal.h b/lib/nvme/nvme_internal.h index b23a9fc91..ebedac38f 100644 --- a/lib/nvme/nvme_internal.h +++ b/lib/nvme/nvme_internal.h @@ -455,6 +455,7 @@ struct spdk_nvme_qpair { const struct spdk_nvme_transport *transport; uint8_t transport_failure_reason: 2; + uint8_t last_transport_failure_reason: 2; }; struct spdk_nvme_poll_group { diff --git a/lib/nvme/nvme_transport.c b/lib/nvme/nvme_transport.c index 7037d4191..f2bb19d9d 100644 --- a/lib/nvme/nvme_transport.c +++ b/lib/nvme/nvme_transport.c @@ -347,7 +347,6 @@ int nvme_transport_ctrlr_connect_qpair(struct spdk_nvme_ctrlr *ctrlr, struct spdk_nvme_qpair *qpair) { const struct spdk_nvme_transport *transport = nvme_get_transport(ctrlr->trid.trstring); - uint8_t transport_failure_reason; int rc; assert(transport != NULL); @@ -355,7 +354,7 @@ nvme_transport_ctrlr_connect_qpair(struct spdk_nvme_ctrlr *ctrlr, struct spdk_nv qpair->transport = transport; } - transport_failure_reason = qpair->transport_failure_reason; + qpair->last_transport_failure_reason = qpair->transport_failure_reason; qpair->transport_failure_reason = SPDK_NVME_QPAIR_FAILURE_NONE; nvme_qpair_set_state(qpair, NVME_QPAIR_CONNECTING); @@ -376,7 +375,7 @@ nvme_transport_ctrlr_connect_qpair(struct spdk_nvme_ctrlr *ctrlr, struct spdk_nv err: /* If the qpair was unable to reconnect, restore the original failure reason. */ - qpair->transport_failure_reason = transport_failure_reason; + qpair->transport_failure_reason = qpair->last_transport_failure_reason; nvme_transport_ctrlr_disconnect_qpair(ctrlr, qpair); nvme_qpair_set_state(qpair, NVME_QPAIR_DISCONNECTED); return rc;