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

nvme_ctrlr: when reconnecting admin queue, check rc.



This was being ignored, and can cause some problems when trying to reset
a defunt controller over a fabric.

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


Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatarJim Harris <james.r.harris@intel.com>
Reviewed-by: default avatarBen Walker <benjamin.walker@intel.com>
parent 13fb1b69
Loading
Loading
Loading
Loading
+7 −1
Original line number Diff line number Diff line
@@ -994,7 +994,12 @@ spdk_nvme_ctrlr_reset(struct spdk_nvme_ctrlr *ctrlr)
	nvme_qpair_complete_error_reqs(ctrlr->adminq);
	nvme_transport_qpair_abort_reqs(ctrlr->adminq, 0 /* retry */);
	nvme_transport_ctrlr_disconnect_qpair(ctrlr, ctrlr->adminq);
	nvme_transport_ctrlr_connect_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;
	}

	/* Doorbell buffer config is invalid during reset */
	nvme_ctrlr_free_doorbell_buffer(ctrlr);
@@ -1021,6 +1026,7 @@ spdk_nvme_ctrlr_reset(struct spdk_nvme_ctrlr *ctrlr)
		}
	}

out:
	ctrlr->is_resetting = false;

	nvme_robust_mutex_unlock(&ctrlr->ctrlr_lock);