Commit db221b40 authored by Konrad Sztyber's avatar Konrad Sztyber Committed by Tomasz Zawadzki
Browse files

nvmf: add QPAIR_CONNECTING state



A qpair is in this state while it's waiting for the CONNECT command.

Signed-off-by: default avatarKonrad Sztyber <konrad.sztyber@intel.com>
Change-Id: I9b14174b634e00838bcbb59b6542349bae263405
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/22588


Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Community-CI: Mellanox Build Bot
Reviewed-by: default avatarJim Harris <jim.harris@samsung.com>
Reviewed-by: default avatarBen Walker <ben@nvidia.com>
parent b54cbf1f
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -124,6 +124,7 @@ SPDK_STATIC_ASSERT(sizeof(struct spdk_nvmf_request) == 776, "Incorrect size");

enum spdk_nvmf_qpair_state {
	SPDK_NVMF_QPAIR_UNINITIALIZED = 0,
	SPDK_NVMF_QPAIR_CONNECTING,
	SPDK_NVMF_QPAIR_ENABLED,
	SPDK_NVMF_QPAIR_DEACTIVATING,
	SPDK_NVMF_QPAIR_ERROR,
@@ -474,7 +475,8 @@ void spdk_nvmf_tgt_new_qpair(struct spdk_nvmf_tgt *tgt, struct spdk_nvmf_qpair *
static inline bool
spdk_nvmf_qpair_is_active(struct spdk_nvmf_qpair *qpair)
{
	return qpair->state == SPDK_NVMF_QPAIR_ENABLED;
	return qpair->state == SPDK_NVMF_QPAIR_CONNECTING ||
	       qpair->state == SPDK_NVMF_QPAIR_ENABLED;
}

/**
+7 −0
Original line number Diff line number Diff line
@@ -240,6 +240,13 @@ nvmf_ctrlr_send_connect_rsp(void *ctx)
	struct spdk_nvmf_ctrlr *ctrlr = qpair->ctrlr;
	struct spdk_nvmf_fabric_connect_rsp *rsp = &req->rsp->connect_rsp;

	/* The qpair might have been disconnected in the meantime */
	assert(qpair->state == SPDK_NVMF_QPAIR_CONNECTING ||
	       qpair->state == SPDK_NVMF_QPAIR_DEACTIVATING);
	if (qpair->state == SPDK_NVMF_QPAIR_CONNECTING) {
		nvmf_qpair_set_state(qpair, SPDK_NVMF_QPAIR_ENABLED);
	}

	SPDK_DEBUGLOG(nvmf, "connect capsule response: cntlid = 0x%04x\n", ctrlr->cntlid);

	assert(spdk_get_thread() == qpair->group->thread);
+2 −2
Original line number Diff line number Diff line
@@ -135,7 +135,7 @@ spdk_nvmf_tgt_remove_referral(struct spdk_nvmf_tgt *tgt,
	return 0;
}

static void
void
nvmf_qpair_set_state(struct spdk_nvmf_qpair *qpair,
		     enum spdk_nvmf_qpair_state state)
{
@@ -1213,7 +1213,7 @@ spdk_nvmf_poll_group_add(struct spdk_nvmf_poll_group *group,
	if (rc == 0) {
		SPDK_DTRACE_PROBE2_TICKS(nvmf_poll_group_add_qpair, qpair, spdk_thread_get_id(group->thread));
		TAILQ_INSERT_TAIL(&group->qpairs, qpair, link);
		nvmf_qpair_set_state(qpair, SPDK_NVMF_QPAIR_ENABLED);
		nvmf_qpair_set_state(qpair, SPDK_NVMF_QPAIR_CONNECTING);
	}

	return rc;
+2 −0
Original line number Diff line number Diff line
@@ -509,6 +509,8 @@ nvmf_qpair_is_admin_queue(struct spdk_nvmf_qpair *qpair)
	return qpair->qid == 0;
}

void nvmf_qpair_set_state(struct spdk_nvmf_qpair *qpair, enum spdk_nvmf_qpair_state state);

static inline bool
nvmf_request_is_fabric_connect(struct spdk_nvmf_request *req)
{
+2 −0
Original line number Diff line number Diff line
@@ -2645,6 +2645,8 @@ nvmf_qpair_state_str(enum spdk_nvmf_qpair_state state)
	switch (state) {
	case SPDK_NVMF_QPAIR_UNINITIALIZED:
		return "uninitialized";
	case SPDK_NVMF_QPAIR_CONNECTING:
		return "connecting";
	case SPDK_NVMF_QPAIR_ENABLED:
		return "enabled";
	case SPDK_NVMF_QPAIR_DEACTIVATING:
Loading