Commit 97cc1177 authored by Shuhei Matsumoto's avatar Shuhei Matsumoto Committed by Tomasz Zawadzki
Browse files

nvme: Complete ctrlr shutdown immediately if adminq is not connected



If spdk_nvme_ctrlr_disconnect() is called and ctrlr is polled until it
is disconnected, ctrlr keeps disconnected. If we call spdk_nvme_detach_async(),
CC register read fails and an error log is collected. We should avoid
this error log by checking if ctrlr->adminq->transport_failure_reason is
not NONE.

Reported-by: default avatarRichael Zhuang <richael.zhuang@arm.com>
Signed-off-by: default avatarShuhei Matsumoto <smatsumoto@nvidia.com>
Change-Id: Idb1b508f9904eee4fe2999b087016a243430e5d3
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/18283


Reviewed-by: default avatarJim Harris <james.r.harris@intel.com>
Reviewed-by: default avatarRichael <richael.zhuang@arm.com>
Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Community-CI: Mellanox Build Bot
Reviewed-by: default avatarAleksey Marchuk <alexeymar@nvidia.com>
parent 6f2e8fa5
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -1116,6 +1116,13 @@ nvme_ctrlr_shutdown_async(struct spdk_nvme_ctrlr *ctrlr,
		return;
	}

	if (ctrlr->adminq == NULL ||
	    ctrlr->adminq->transport_failure_reason != SPDK_NVME_QPAIR_FAILURE_NONE) {
		NVME_CTRLR_INFOLOG(ctrlr, "Adminq is not connected.\n");
		ctx->shutdown_complete = true;
		return;
	}

	ctx->state = NVME_CTRLR_DETACH_SET_CC;
	rc = nvme_ctrlr_get_cc_async(ctrlr, nvme_ctrlr_shutdown_get_cc_done, ctx);
	if (rc != 0) {