Commit 194ba583 authored by Ben Walker's avatar Ben Walker Committed by Jim Harris
Browse files

nvmf: Add helper function to verify qpair state is set from correct


thread

In debug mode this will verify that the state is being set
from the correct thread only.

Change-Id: I6234299d1fcdb63cd047417b6255c91e29991242
Signed-off-by: default avatarBen Walker <benjamin.walker@intel.com>
Reviewed-on: https://review.gerrithub.io/423411


Chandler-Test-Pool: SPDK Automated Test System <sys_sgsw@intel.com>
Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatarChangpeng Liu <changpeng.liu@intel.com>
Reviewed-by: default avatarShuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Reviewed-by: default avatarSeth Howell <seth.howell5141@gmail.com>
Reviewed-by: default avatarJim Harris <james.r.harris@intel.com>
parent 0d7d3a04
Loading
Loading
Loading
Loading
+18 −8
Original line number Diff line number Diff line
@@ -80,6 +80,16 @@ struct nvmf_qpair_disconnect_many_ctx {
	void *cpl_ctx;
};

static void
spdk_nvmf_qpair_set_state(struct spdk_nvmf_qpair *qpair,
			  enum spdk_nvmf_qpair_state state)
{
	assert(qpair != NULL);
	assert(qpair->group->thread == spdk_get_thread());

	qpair->state = state;
}

void
spdk_nvmf_tgt_opts_init(struct spdk_nvmf_tgt_opts *opts)
{
@@ -599,7 +609,7 @@ spdk_nvmf_poll_group_add(struct spdk_nvmf_poll_group *group,

	TAILQ_INIT(&qpair->outstanding);
	qpair->group = group;
	qpair->state = SPDK_NVMF_QPAIR_ACTIVATING;
	spdk_nvmf_qpair_set_state(qpair, SPDK_NVMF_QPAIR_ACTIVATING);

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

@@ -611,9 +621,9 @@ spdk_nvmf_poll_group_add(struct spdk_nvmf_poll_group *group,
	}

	if (rc == 0) {
		qpair->state = SPDK_NVMF_QPAIR_ACTIVE;
		spdk_nvmf_qpair_set_state(qpair, SPDK_NVMF_QPAIR_ACTIVE);
	} else {
		qpair->state = SPDK_NVMF_QPAIR_INACTIVE;
		spdk_nvmf_qpair_set_state(qpair, SPDK_NVMF_QPAIR_INACTIVE);
	}

	return rc;
@@ -655,13 +665,13 @@ _spdk_nvmf_qpair_destroy(void *ctx, int status)
	struct spdk_nvmf_qpair *qpair = qpair_ctx->qpair;
	struct spdk_nvmf_ctrlr *ctrlr = qpair->ctrlr;

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

	assert(qpair->state == SPDK_NVMF_QPAIR_DEACTIVATING);
	qpair->state = SPDK_NVMF_QPAIR_INACTIVE;
	spdk_nvmf_qpair_set_state(qpair, SPDK_NVMF_QPAIR_INACTIVE);
	qpair_ctx->qid = qpair->qid;

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

	spdk_nvmf_transport_qpair_fini(qpair);

	if (!ctrlr || !ctrlr->thread) {
@@ -696,7 +706,7 @@ _spdk_nvmf_qpair_deactivate(void *ctx)
	}

	assert(qpair->state == SPDK_NVMF_QPAIR_ACTIVE);
	qpair->state = SPDK_NVMF_QPAIR_DEACTIVATING;
	spdk_nvmf_qpair_set_state(qpair, SPDK_NVMF_QPAIR_DEACTIVATING);

	/* Check for outstanding I/O */
	if (!TAILQ_EMPTY(&qpair->outstanding)) {