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

lib/nvme: split out function to get ops.



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


Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatarJim Harris <james.r.harris@intel.com>
Reviewed-by: default avatarShuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
parent e4eef697
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -1117,6 +1117,8 @@ bool nvme_completion_is_retry(const struct spdk_nvme_cpl *cpl);
struct spdk_nvme_ctrlr *spdk_nvme_get_ctrlr_by_trid_unsafe(
	const struct spdk_nvme_transport_id *trid);

const struct nvme_transport *nvme_get_transport(const char *transport_name);

/* Transport specific functions */
#define DECLARE_TRANSPORT(name) \
	struct spdk_nvme_ctrlr *nvme_ ## name ## _ctrlr_construct(const struct spdk_nvme_transport_id *trid, const struct spdk_nvme_ctrlr_opts *opts, \
+18 −7
Original line number Diff line number Diff line
@@ -109,17 +109,28 @@ spdk_nvme_transport_available_by_name(const char *transport_name)
	return spdk_nvme_transport_available(trtype);
}

const struct nvme_transport *
nvme_get_transport(const char *transport_name)
{
	struct nvme_transport *registered_transport;

	TAILQ_FOREACH(registered_transport, &g_spdk_nvme_transports, link) {
		if (strcasecmp(transport_name, registered_transport->ops.name) == 0) {
			return registered_transport;
		}
	}

	return NULL;
}

void
spdk_nvme_transport_register(const struct spdk_nvme_transport_ops *ops)
{
	struct nvme_transport *registered_transport, *new_transport;
	struct nvme_transport *new_transport;

	TAILQ_FOREACH(registered_transport, &g_spdk_nvme_transports, link) {
		if (strcasecmp(ops->name, registered_transport->ops.name) == 0) {
	if (nvme_get_transport(ops->name)) {
		SPDK_ERRLOG("Double registering NVMe transport %s is prohibited.\n", ops->name);
		assert(false);
			return;
		}
	}

	new_transport = calloc(1, sizeof(*new_transport));