diff --git a/lib/nvmf/nvmf.c b/lib/nvmf/nvmf.c index ac25e39cc..6b17c05da 100644 --- a/lib/nvmf/nvmf.c +++ b/lib/nvmf/nvmf.c @@ -654,8 +654,6 @@ spdk_nvmf_poll_group_add(struct spdk_nvmf_poll_group *group, qpair->group = group; spdk_nvmf_qpair_set_state(qpair, SPDK_NVMF_QPAIR_ACTIVATING); - TAILQ_INSERT_TAIL(&group->qpairs, qpair, link); - TAILQ_FOREACH(tgroup, &group->tgroups, link) { if (tgroup->transport == qpair->transport) { rc = spdk_nvmf_transport_poll_group_add(tgroup, qpair); @@ -663,10 +661,10 @@ spdk_nvmf_poll_group_add(struct spdk_nvmf_poll_group *group, } } + /* We add the qpair to the group only it is succesfully added into the tgroup */ if (rc == 0) { + TAILQ_INSERT_TAIL(&group->qpairs, qpair, link); spdk_nvmf_qpair_set_state(qpair, SPDK_NVMF_QPAIR_ACTIVE); - } else { - spdk_nvmf_qpair_set_state(qpair, SPDK_NVMF_QPAIR_ERROR); } return rc;