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: Ben 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: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Changpeng Liu <changpeng.liu@intel.com>
Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Reviewed-by: Seth Howell <seth.howell5141@gmail.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
This commit is contained in:
Ben Walker 2018-08-24 10:16:23 -07:00 committed by Jim Harris
parent 0d7d3a04e3
commit 194ba5833f

View File

@ -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;
assert(qpair->state == SPDK_NVMF_QPAIR_DEACTIVATING);
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;
assert(qpair->state == SPDK_NVMF_QPAIR_DEACTIVATING);
qpair->state = SPDK_NVMF_QPAIR_INACTIVE;
qpair_ctx->qid = qpair->qid;
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)) {