lib/nvmf: get_transport now takes a string.
This function previously accepted a trtype enum, but needs to be able to accept a string to support custom transports. Change-Id: I931aed30ca3be65468552ffa1bb1ef3f91275fda Signed-off-by: Seth Howell <seth.howell@intel.com> Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/479601 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com> Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com> Reviewed-by: Jim Harris <james.r.harris@intel.com>
This commit is contained in:
parent
5b3e6cd137
commit
b397546e9d
@ -1009,12 +1009,12 @@ int spdk_nvmf_transport_destroy(struct spdk_nvmf_transport *transport);
|
||||
* Get an existing transport from the target
|
||||
*
|
||||
* \param tgt The NVMe-oF target
|
||||
* \param type The transport type to get
|
||||
* \param transport_name The name of the transport type to get.
|
||||
*
|
||||
* \return the transport or NULL if not found
|
||||
*/
|
||||
struct spdk_nvmf_transport *spdk_nvmf_tgt_get_transport(struct spdk_nvmf_tgt *tgt,
|
||||
enum spdk_nvme_transport_type type);
|
||||
const char *transport_name);
|
||||
|
||||
/**
|
||||
* Get the first transport registered with the given target
|
||||
|
@ -951,7 +951,7 @@ nvmf_fc_ls_process_cass(uint32_t s_id,
|
||||
uint8_t rc = FCNVME_RJT_RC_NONE;
|
||||
uint8_t ec = FCNVME_RJT_EXP_NONE;
|
||||
struct spdk_nvmf_transport *transport = spdk_nvmf_tgt_get_transport(ls_rqst->nvmf_tgt,
|
||||
(enum spdk_nvme_transport_type) SPDK_NVMF_TRTYPE_FC);
|
||||
SPDK_NVME_TRANSPORT_NAME_FC);
|
||||
|
||||
SPDK_DEBUGLOG(SPDK_LOG_NVMF_FC_LS,
|
||||
"LS_CASS: ls_rqst_len=%d, desc_list_len=%d, cmd_len=%d, sq_size=%d, "
|
||||
@ -1086,7 +1086,7 @@ nvmf_fc_ls_process_cioc(struct spdk_nvmf_fc_nport *tgtport,
|
||||
uint8_t rc = FCNVME_RJT_RC_NONE;
|
||||
uint8_t ec = FCNVME_RJT_EXP_NONE;
|
||||
struct spdk_nvmf_transport *transport = spdk_nvmf_tgt_get_transport(ls_rqst->nvmf_tgt,
|
||||
(enum spdk_nvme_transport_type) SPDK_NVMF_TRTYPE_FC);
|
||||
SPDK_NVME_TRANSPORT_NAME_FC);
|
||||
|
||||
SPDK_DEBUGLOG(SPDK_LOG_NVMF_FC_LS,
|
||||
"LS_CIOC: ls_rqst_len=%d, desc_list_len=%d, cmd_len=%d, "
|
||||
|
@ -550,7 +550,7 @@ spdk_nvmf_tgt_listen(struct spdk_nvmf_tgt *tgt,
|
||||
const char *trtype;
|
||||
int rc;
|
||||
|
||||
transport = spdk_nvmf_tgt_get_transport(tgt, trid->trtype);
|
||||
transport = spdk_nvmf_tgt_get_transport(tgt, trid->trstring);
|
||||
if (!transport) {
|
||||
trtype = spdk_nvme_transport_id_trtype_str(trid->trtype);
|
||||
if (trtype != NULL) {
|
||||
@ -611,7 +611,7 @@ void spdk_nvmf_tgt_add_transport(struct spdk_nvmf_tgt *tgt,
|
||||
{
|
||||
struct spdk_nvmf_tgt_add_transport_ctx *ctx;
|
||||
|
||||
if (spdk_nvmf_tgt_get_transport(tgt, transport->ops->type)) {
|
||||
if (spdk_nvmf_tgt_get_transport(tgt, transport->ops->name)) {
|
||||
cb_fn(cb_arg, -EEXIST);
|
||||
return; /* transport already created */
|
||||
}
|
||||
@ -661,16 +661,15 @@ spdk_nvmf_tgt_find_subsystem(struct spdk_nvmf_tgt *tgt, const char *subnqn)
|
||||
}
|
||||
|
||||
struct spdk_nvmf_transport *
|
||||
spdk_nvmf_tgt_get_transport(struct spdk_nvmf_tgt *tgt, enum spdk_nvme_transport_type type)
|
||||
spdk_nvmf_tgt_get_transport(struct spdk_nvmf_tgt *tgt, const char *transport_name)
|
||||
{
|
||||
struct spdk_nvmf_transport *transport;
|
||||
|
||||
TAILQ_FOREACH(transport, &tgt->transports, link) {
|
||||
if (transport->ops->type == type) {
|
||||
if (!strncasecmp(transport->ops->name, transport_name, SPDK_NVMF_TRSTRING_MAX_LEN)) {
|
||||
return transport;
|
||||
}
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
@ -367,10 +367,6 @@ struct spdk_nvmf_subsystem {
|
||||
TAILQ_ENTRY(spdk_nvmf_subsystem) entries;
|
||||
};
|
||||
|
||||
|
||||
struct spdk_nvmf_transport *spdk_nvmf_tgt_get_transport(struct spdk_nvmf_tgt *tgt,
|
||||
enum spdk_nvme_transport_type);
|
||||
|
||||
int spdk_nvmf_poll_group_add_transport(struct spdk_nvmf_poll_group *group,
|
||||
struct spdk_nvmf_transport *transport);
|
||||
int spdk_nvmf_poll_group_update_subsystem(struct spdk_nvmf_poll_group *group,
|
||||
|
@ -1694,7 +1694,7 @@ spdk_rpc_nvmf_create_transport(struct spdk_jsonrpc_request *request,
|
||||
return;
|
||||
}
|
||||
|
||||
if (spdk_nvmf_tgt_get_transport(tgt, trtype)) {
|
||||
if (spdk_nvmf_tgt_get_transport(tgt, ctx->trtype)) {
|
||||
SPDK_ERRLOG("Transport type '%s' already exists\n", ctx->trtype);
|
||||
spdk_jsonrpc_send_error_response_fmt(request, SPDK_JSONRPC_ERROR_INTERNAL_ERROR,
|
||||
"Transport type '%s' already exists\n", ctx->trtype);
|
||||
|
@ -318,7 +318,7 @@ _nvmf_subsystem_remove_listener(struct spdk_nvmf_subsystem *subsystem,
|
||||
{
|
||||
struct spdk_nvmf_transport *transport;
|
||||
|
||||
transport = spdk_nvmf_tgt_get_transport(subsystem->tgt, listener->trid.trtype);
|
||||
transport = spdk_nvmf_tgt_get_transport(subsystem->tgt, listener->trid.trstring);
|
||||
if (transport != NULL) {
|
||||
spdk_nvmf_transport_stop_listen(transport, &listener->trid);
|
||||
}
|
||||
@ -764,7 +764,7 @@ spdk_nvmf_subsystem_add_listener(struct spdk_nvmf_subsystem *subsystem,
|
||||
return 0;
|
||||
}
|
||||
|
||||
transport = spdk_nvmf_tgt_get_transport(subsystem->tgt, trid->trtype);
|
||||
transport = spdk_nvmf_tgt_get_transport(subsystem->tgt, trid->trstring);
|
||||
if (transport == NULL) {
|
||||
SPDK_ERRLOG("Unknown transport type %d\n", trid->trtype);
|
||||
return -EINVAL;
|
||||
|
@ -585,7 +585,7 @@ spdk_nvmf_parse_transport(struct spdk_nvmf_parse_transport_ctx *ctx)
|
||||
return;
|
||||
}
|
||||
|
||||
if (spdk_nvmf_tgt_get_transport(g_spdk_nvmf_tgt, trtype)) {
|
||||
if (spdk_nvmf_tgt_get_transport(g_spdk_nvmf_tgt, type)) {
|
||||
SPDK_ERRLOG("Duplicate transport type '%s'\n", type);
|
||||
ctx->cb_fn(-1);
|
||||
free(ctx);
|
||||
|
@ -112,7 +112,7 @@ spdk_nvmf_tgt_find_subsystem(struct spdk_nvmf_tgt *tgt, const char *subnqn)
|
||||
}
|
||||
|
||||
struct spdk_nvmf_transport *
|
||||
spdk_nvmf_tgt_get_transport(struct spdk_nvmf_tgt *tgt, enum spdk_nvme_transport_type trtype)
|
||||
spdk_nvmf_tgt_get_transport(struct spdk_nvmf_tgt *tgt, const char *transport_name)
|
||||
{
|
||||
return &g_transport;
|
||||
}
|
||||
|
@ -130,7 +130,7 @@ struct spdk_nvmf_transport g_nvmf_transport = {
|
||||
};
|
||||
|
||||
struct spdk_nvmf_transport *
|
||||
spdk_nvmf_tgt_get_transport(struct spdk_nvmf_tgt *tgt, enum spdk_nvme_transport_type type)
|
||||
spdk_nvmf_tgt_get_transport(struct spdk_nvmf_tgt *tgt, const char *transport_name)
|
||||
{
|
||||
return &g_nvmf_transport;
|
||||
}
|
||||
|
@ -99,9 +99,9 @@ spdk_nvmf_tgt_find_subsystem(struct spdk_nvmf_tgt *tgt, const char *subnqn)
|
||||
}
|
||||
|
||||
struct spdk_nvmf_transport *
|
||||
spdk_nvmf_tgt_get_transport(struct spdk_nvmf_tgt *tgt, enum spdk_nvme_transport_type trtype)
|
||||
spdk_nvmf_tgt_get_transport(struct spdk_nvmf_tgt *tgt, const char *transport_name)
|
||||
{
|
||||
if (trtype == SPDK_NVME_TRANSPORT_RDMA) {
|
||||
if (strncmp(transport_name, SPDK_NVME_TRANSPORT_NAME_RDMA, SPDK_NVMF_TRSTRING_MAX_LEN)) {
|
||||
return &g_transport;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user