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

lib/nvmf: opts_init and transport_create use string now.



This will help enable pluggable NVMe-oF transports.

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


Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatarBen Walker <benjamin.walker@intel.com>
Reviewed-by: default avatarShuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Reviewed-by: default avatarJim Harris <james.r.harris@intel.com>
Reviewed-by: default avatarAnil Veerabhadrappa <anil.veerabhadrappa@broadcom.com>
parent d4ea320b
Loading
Loading
Loading
Loading
+9 −4
Original line number Diff line number Diff line
@@ -123,6 +123,11 @@ struct spdk_nvmf_transport_poll_group_stat {
typedef void (*new_qpair_fn)(struct spdk_nvmf_qpair *qpair, void *cb_arg);

struct spdk_nvmf_transport_ops {
	/**
	 * Transport name
	 */
	char name[SPDK_NVMF_TRSTRING_MAX_LEN];

	/**
	 * Transport type
	 */
@@ -970,25 +975,25 @@ enum spdk_nvmf_subtype spdk_nvmf_subsystem_get_type(struct spdk_nvmf_subsystem *
/**
 * Initialize transport options
 *
 * \param type The transport type to create
 * \param transport_name The transport type to create
 * \param opts The transport options (e.g. max_io_size)
 *
 * \return bool. true if successful, false if transport type
 *	   not found.
 */
bool
spdk_nvmf_transport_opts_init(enum spdk_nvme_transport_type type,
spdk_nvmf_transport_opts_init(const char *transport_name,
			      struct spdk_nvmf_transport_opts *opts);

/**
 * Create a protocol transport
 *
 * \param type The transport type to create
 * \param transport_name The transport type to create
 * \param opts The transport options (e.g. max_io_size)
 *
 * \return new transport or NULL if create fails
 */
struct spdk_nvmf_transport *spdk_nvmf_transport_create(enum spdk_nvme_transport_type type,
struct spdk_nvmf_transport *spdk_nvmf_transport_create(const char *transport_name,
		struct spdk_nvmf_transport_opts *opts);

/**
+1 −0
Original line number Diff line number Diff line
@@ -2140,6 +2140,7 @@ nvmf_fc_qpair_get_listen_trid(struct spdk_nvmf_qpair *qpair,
}

const struct spdk_nvmf_transport_ops spdk_nvmf_transport_fc = {
	.name = "FC",
	.type = (enum spdk_nvme_transport_type) SPDK_NVMF_TRTYPE_FC,
	.opts_init = nvmf_fc_opts_init,
	.create = nvmf_fc_create,
+2 −2
Original line number Diff line number Diff line
@@ -1674,7 +1674,7 @@ spdk_rpc_nvmf_create_transport(struct spdk_jsonrpc_request *request,
	/* Initialize all the transport options (based on transport type) and decode the
	 * parameters again to update any options passed in rpc create transport call.
	 */
	if (!spdk_nvmf_transport_opts_init(trtype, &ctx->opts)) {
	if (!spdk_nvmf_transport_opts_init(ctx->trtype, &ctx->opts)) {
		/* This can happen if user specifies PCIE transport type which isn't valid for
		 * NVMe-oF.
		 */
@@ -1702,7 +1702,7 @@ spdk_rpc_nvmf_create_transport(struct spdk_jsonrpc_request *request,
		return;
	}

	transport = spdk_nvmf_transport_create(trtype, &ctx->opts);
	transport = spdk_nvmf_transport_create(ctx->trtype, &ctx->opts);

	if (!transport) {
		SPDK_ERRLOG("Transport type '%s' create failed\n", ctx->trtype);
+1 −0
Original line number Diff line number Diff line
@@ -4080,6 +4080,7 @@ spdk_nvmf_rdma_poll_group_free_stat(struct spdk_nvmf_transport_poll_group_stat *
}

const struct spdk_nvmf_transport_ops spdk_nvmf_transport_rdma = {
	.name = "RDMA",
	.type = SPDK_NVME_TRANSPORT_RDMA,
	.opts_init = spdk_nvmf_rdma_opts_init,
	.create = spdk_nvmf_rdma_create,
+1 −0
Original line number Diff line number Diff line
@@ -2743,6 +2743,7 @@ spdk_nvmf_tcp_opts_init(struct spdk_nvmf_transport_opts *opts)
}

const struct spdk_nvmf_transport_ops spdk_nvmf_transport_tcp = {
	.name = "TCP",
	.type = SPDK_NVME_TRANSPORT_TCP,
	.opts_init = spdk_nvmf_tcp_opts_init,
	.create = spdk_nvmf_tcp_create,
Loading