Commit 2476a745 authored by Seth Howell's avatar Seth Howell Committed by Jim Harris
Browse files

nvme: don't fail the ctrlr in nvme_ctrlr_reset



This paves the way for doing multiple reconnect attempts before failing
the controller.

Change-Id: I1ff4ee6d41a5ffb47dd186d76793d670287c4783
Signed-off-by: default avatarSeth Howell <seth.howell@intel.com>
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/469934


Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatarBen Walker <benjamin.walker@intel.com>
Reviewed-by: default avatarJim Harris <james.r.harris@intel.com>
Reviewed-by: default avatarAlexey Marchuk <alexeymar@mellanox.com>
Reviewed-by: default avatarPaul Luse <paul.e.luse@intel.com>
Reviewed-by: default avatarJohn Kariuki <John.K.Kariuki@intel.com>
parent 4dd94a25
Loading
Loading
Loading
Loading
+7 −5
Original line number Diff line number Diff line
@@ -996,7 +996,6 @@ nvme_ctrlr_reset(struct spdk_nvme_ctrlr *ctrlr)
	nvme_transport_ctrlr_disconnect_qpair(ctrlr, ctrlr->adminq);
	if (nvme_transport_ctrlr_connect_qpair(ctrlr, ctrlr->adminq) != 0) {
		SPDK_ERRLOG("Controller reinitialization failed.\n");
		nvme_ctrlr_fail(ctrlr, false);
		rc = -1;
		goto out;
	}
@@ -1010,17 +1009,15 @@ nvme_ctrlr_reset(struct spdk_nvme_ctrlr *ctrlr)
	while (ctrlr->state != NVME_CTRLR_STATE_READY) {
		if (nvme_ctrlr_process_init(ctrlr) != 0) {
			SPDK_ERRLOG("controller reinitialization failed\n");
			nvme_ctrlr_fail(ctrlr, false);
			rc = -1;
			break;
		}
	}

	if (!ctrlr->is_failed) {
	if (rc == 0) {
		/* Reinitialize qpairs */
		TAILQ_FOREACH(qpair, &ctrlr->active_io_qpairs, tailq) {
			if (nvme_transport_ctrlr_connect_qpair(ctrlr, qpair) != 0) {
				nvme_ctrlr_fail(ctrlr, false);
				rc = -1;
			}
		}
@@ -1037,7 +1034,12 @@ out:
int
spdk_nvme_ctrlr_reset(struct spdk_nvme_ctrlr *ctrlr)
{
	return nvme_ctrlr_reset(ctrlr);
	if (nvme_ctrlr_reset(ctrlr) != 0) {
		nvme_ctrlr_fail(ctrlr, false);
		return -1;
	}

	return 0;
}

static void