Commit b9a18797 authored by Seth Howell's avatar Seth Howell Committed by Tomasz Zawadzki
Browse files

nvme: add poll group handling to qpair path.



Signed-off-by: default avatarSeth Howell <seth.howell@intel.com>
Change-Id: I9116cdcb5bbeb16ee74decee5586bda9a42090aa
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/633


Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Community-CI: Broadcom CI
Reviewed-by: default avatarAleksey Marchuk <alexeymar@mellanox.com>
Reviewed-by: default avatarJim Harris <james.r.harris@intel.com>
Reviewed-by: default avatarBen Walker <benjamin.walker@intel.com>
parent ccf0fd4e
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -500,7 +500,6 @@ nvme_ctrlr_disconnect_qpair(struct spdk_nvme_qpair *qpair)
	struct spdk_nvme_ctrlr *ctrlr = qpair->ctrlr;

	assert(ctrlr != NULL);

	nvme_robust_mutex_lock(&ctrlr->ctrlr_lock);
	nvme_transport_ctrlr_disconnect_qpair(ctrlr, qpair);
	nvme_robust_mutex_unlock(&ctrlr->ctrlr_lock);
@@ -528,6 +527,10 @@ spdk_nvme_ctrlr_free_io_qpair(struct spdk_nvme_qpair *qpair)
		return 0;
	}

	if (qpair->poll_group) {
		spdk_nvme_poll_group_remove(qpair->poll_group->group, qpair);
	}

	nvme_robust_mutex_lock(&ctrlr->ctrlr_lock);

	nvme_ctrlr_proc_remove_io_qpair(qpair);
+19 −5
Original line number Diff line number Diff line
@@ -275,13 +275,24 @@ nvme_transport_ctrlr_connect_qpair(struct spdk_nvme_ctrlr *ctrlr, struct spdk_nv
	}
	nvme_qpair_set_state(qpair, NVME_QPAIR_CONNECTING);
	rc = transport->ops.ctrlr_connect_qpair(ctrlr, qpair);
	if (rc == 0) {
	if (rc != 0) {
		goto err;
	}

	nvme_qpair_set_state(qpair, NVME_QPAIR_CONNECTED);
		qpair->transport_failure_reason = SPDK_NVME_QPAIR_FAILURE_NONE;
	} else {
		nvme_qpair_set_state(qpair, NVME_QPAIR_DISABLED);
	if (qpair->poll_group) {
		rc = nvme_poll_group_activate_qpair(qpair);
		if (rc) {
			goto err;
		}
	}

	qpair->transport_failure_reason = SPDK_NVME_QPAIR_FAILURE_NONE;
	return rc;

err:
	nvme_transport_ctrlr_disconnect_qpair(ctrlr, qpair);
	nvme_qpair_set_state(qpair, NVME_QPAIR_DISABLED);
	return rc;
}

@@ -291,6 +302,9 @@ nvme_transport_ctrlr_disconnect_qpair(struct spdk_nvme_ctrlr *ctrlr, struct spdk
	const struct spdk_nvme_transport *transport = nvme_get_transport(ctrlr->trid.trstring);

	assert(transport != NULL);
	if (qpair->poll_group) {
		nvme_poll_group_deactivate_qpair(qpair);
	}
	transport->ops.ctrlr_disconnect_qpair(ctrlr, qpair);
}

+2 −0
Original line number Diff line number Diff line
@@ -67,6 +67,8 @@ DEFINE_STUB(nvme_ctrlr_cmd_set_host_id, int,
	    (struct spdk_nvme_ctrlr *ctrlr, void *host_id, uint32_t host_id_size,
	     spdk_nvme_cmd_cb cb_fn, void *cb_arg), 0);
DEFINE_STUB_V(nvme_ns_set_identify_data, (struct spdk_nvme_ns *ns));
DEFINE_STUB(spdk_nvme_poll_group_remove, int, (struct spdk_nvme_poll_group *group,
		struct spdk_nvme_qpair *qpair), 0);

struct spdk_nvme_ctrlr *nvme_transport_ctrlr_construct(const struct spdk_nvme_transport_id *trid,
		const struct spdk_nvme_ctrlr_opts *opts,