Commit 6f38799b authored by Seth Howell's avatar Seth Howell Committed by Tomasz Zawadzki
Browse files

lib/nvmf: call ctrlr_fini after clearing qid from ctrlr bit array.



As soon as we disconnect the qpair, the initiator can submit an
additional request to connect a qpair with the same qid as the
one we connected.

This series is aimed at making sure we don't acknowledge a disconnect
until we have cleared that bit.

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


Community-CI: Mellanox Build Bot
Community-CI: Broadcom CI
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 avatarAleksey Marchuk <alexeymar@mellanox.com>
parent 9d39be44
Loading
Loading
Loading
Loading
+10 −2
Original line number Diff line number Diff line
@@ -778,6 +778,14 @@ void _nvmf_ctrlr_destruct(void *ctx)
	spdk_nvmf_ctrlr_destruct(ctrlr);
}

static void
_nvmf_transport_qpair_fini(void *ctx)
{
	struct spdk_nvmf_qpair *qpair = ctx;

	spdk_nvmf_transport_qpair_fini(qpair);
}

static void
_spdk_nvmf_ctrlr_free_from_qpair(void *ctx)
{
@@ -793,6 +801,7 @@ _spdk_nvmf_ctrlr_free_from_qpair(void *ctx)
		spdk_thread_send_msg(ctrlr->subsys->thread, _nvmf_ctrlr_destruct, ctrlr);
	}

	spdk_thread_send_msg(qpair_ctx->thread, _nvmf_transport_qpair_fini, qpair_ctx->qpair);
	if (qpair_ctx->cb_fn) {
		spdk_thread_send_msg(qpair_ctx->thread, qpair_ctx->cb_fn, qpair_ctx->ctx);
	}
@@ -840,9 +849,8 @@ _spdk_nvmf_qpair_destroy(void *ctx, int status)

	TAILQ_REMOVE(&qpair->group->qpairs, qpair, link);

	spdk_nvmf_transport_qpair_fini(qpair);

	if (!ctrlr || !ctrlr->thread) {
		spdk_nvmf_transport_qpair_fini(qpair);
		if (qpair_ctx->cb_fn) {
			spdk_thread_send_msg(qpair_ctx->thread, qpair_ctx->cb_fn, qpair_ctx->ctx);
		}