Commit 963e450a authored by Jim Harris's avatar Jim Harris Committed by Changpeng Liu
Browse files

nvme: complete error reqs when re-enabling queue



We cannot complete error reqs from spdk_nvme_ctrlr_reset -
this could result in completions on threads not expected
by the user for I/O queues.

Signed-off-by: default avatarJim Harris <james.r.harris@intel.com>
Change-Id: I2e266a2618f1791ef1a1b713d1940357f23f7bff

Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/453932


Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatarBen Walker <benjamin.walker@intel.com>
Reviewed-by: default avatarShuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Reviewed-by: default avatarChangpeng Liu <changpeng.liu@intel.com>
parent b9fe38c1
Loading
Loading
Loading
Loading
+1 −5
Original line number Diff line number Diff line
@@ -844,11 +844,6 @@ spdk_nvme_ctrlr_reset(struct spdk_nvme_ctrlr *ctrlr)

	nvme_transport_admin_qpair_abort_aers(ctrlr->adminq);

	nvme_qpair_complete_error_reqs(ctrlr->adminq);
	TAILQ_FOREACH(qpair, &ctrlr->active_io_qpairs, tailq) {
		nvme_qpair_complete_error_reqs(qpair);
	}

	/* Disable all queues before disabling the controller hardware. */
	nvme_qpair_disable(ctrlr->adminq);
	TAILQ_FOREACH(qpair, &ctrlr->active_io_qpairs, tailq) {
@@ -1922,6 +1917,7 @@ static void
nvme_ctrlr_enable_admin_queue(struct spdk_nvme_ctrlr *ctrlr)
{
	nvme_transport_qpair_reset(ctrlr->adminq);
	nvme_qpair_complete_error_reqs(ctrlr->adminq);
	nvme_qpair_enable(ctrlr->adminq);
	nvme_transport_qpair_abort_reqs(ctrlr->adminq, 0 /* retry */);
}
+1 −0
Original line number Diff line number Diff line
@@ -405,6 +405,7 @@ static bool
nvme_qpair_check_enabled(struct spdk_nvme_qpair *qpair)
{
	if (!qpair->is_enabled && !qpair->ctrlr->is_resetting) {
		nvme_qpair_complete_error_reqs(qpair);
		nvme_qpair_abort_queued_reqs(qpair, 0 /* retry */);
		nvme_qpair_enable(qpair);
		nvme_transport_qpair_abort_reqs(qpair, 0 /* retry */);