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:
parent
0d7d3a04e3
commit
194ba5833f
@ -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)) {
|
||||
|
Loading…
Reference in New Issue
Block a user