nvmf: Remove spdk_nvmf_transport from public API

The details of the structure were removed earlier, but
now remove all references even to a pointer to the
structure. The user can refer to transports by their
string name.

Change-Id: I273356f46329ea5372dcd951eda6f14767477d69
Signed-off-by: Ben Walker <benjamin.walker@intel.com>
This commit is contained in:
Ben Walker 2016-10-10 15:18:41 -07:00 committed by Jim Harris
parent bb5d8e506c
commit b43db69a44
7 changed files with 34 additions and 35 deletions

View File

@ -482,7 +482,6 @@ spdk_nvmf_parse_subsystem(struct spdk_conf_section *sp)
for (i = 0; i < MAX_LISTEN_ADDRESSES; i++) { for (i = 0; i < MAX_LISTEN_ADDRESSES; i++) {
char *transport_name, *listen_addr; char *transport_name, *listen_addr;
char *traddr, *trsvcid; char *traddr, *trsvcid;
const struct spdk_nvmf_transport *transport;
int numa_node = -1; int numa_node = -1;
transport_name = spdk_conf_section_get_nmval(sp, "Listen", i, 0); transport_name = spdk_conf_section_get_nmval(sp, "Listen", i, 0);
@ -492,12 +491,6 @@ spdk_nvmf_parse_subsystem(struct spdk_conf_section *sp)
break; break;
} }
transport = spdk_nvmf_transport_get(transport_name);
if (transport == NULL) {
SPDK_ERRLOG("Unknown transport type '%s'\n", transport_name);
continue;
}
ret = spdk_nvmf_parse_addr(listen_addr, &traddr, &trsvcid); ret = spdk_nvmf_parse_addr(listen_addr, &traddr, &trsvcid);
if (ret < 0) { if (ret < 0) {
SPDK_ERRLOG("Unable to parse transport address '%s'\n", listen_addr); SPDK_ERRLOG("Unable to parse transport address '%s'\n", listen_addr);
@ -513,7 +506,7 @@ spdk_nvmf_parse_subsystem(struct spdk_conf_section *sp)
spdk_nvmf_subsystem_get_nqn(app_subsys->subsystem)); spdk_nvmf_subsystem_get_nqn(app_subsys->subsystem));
} }
} }
spdk_nvmf_subsystem_add_listener(subsystem, transport, traddr, trsvcid); spdk_nvmf_subsystem_add_listener(subsystem, transport_name, traddr, trsvcid);
free(traddr); free(traddr);
free(trsvcid); free(trsvcid);
@ -711,15 +704,8 @@ spdk_nvmf_parse_subsystem_for_rpc(const char *name,
/* Parse Listen sections */ /* Parse Listen sections */
for (i = 0; i < num_listen_addresses; i++) { for (i = 0; i < num_listen_addresses; i++) {
const struct spdk_nvmf_transport *transport; spdk_nvmf_subsystem_add_listener(subsystem, addresses[i].transport, addresses[i].traddr,
addresses[i].trsvcid);
transport = spdk_nvmf_transport_get(addresses[i].transport);
if (transport == NULL) {
SPDK_ERRLOG("Unknown transport type '%s'\n", addresses[i].transport);
return -1;
}
spdk_nvmf_subsystem_add_listener(subsystem, transport, addresses[i].traddr, addresses[i].trsvcid);
} }
/* Parse Host sections */ /* Parse Host sections */

View File

@ -78,7 +78,7 @@ dump_nvmf_subsystem(struct spdk_json_write_ctx *w, struct nvmf_tgt_subsystem *tg
TAILQ_FOREACH(listen_addr, &subsystem->listen_addrs, link) { TAILQ_FOREACH(listen_addr, &subsystem->listen_addrs, link) {
spdk_json_write_object_begin(w); spdk_json_write_object_begin(w);
spdk_json_write_name(w, "transport"); spdk_json_write_name(w, "transport");
spdk_json_write_string(w, spdk_nvmf_transport_get_name(listen_addr->transport)); spdk_json_write_string(w, listen_addr->trname);
spdk_json_write_name(w, "traddr"); spdk_json_write_name(w, "traddr");
spdk_json_write_string(w, listen_addr->traddr); spdk_json_write_string(w, listen_addr->traddr);
spdk_json_write_name(w, "trsvcid"); spdk_json_write_name(w, "trsvcid");

View File

@ -63,7 +63,6 @@ struct spdk_nvmf_conn;
struct spdk_nvmf_request; struct spdk_nvmf_request;
struct spdk_bdev; struct spdk_bdev;
struct spdk_nvme_ctrlr; struct spdk_nvme_ctrlr;
struct spdk_nvmf_transport;
struct spdk_nvmf_request; struct spdk_nvmf_request;
struct spdk_nvmf_conn; struct spdk_nvmf_conn;
@ -78,7 +77,7 @@ enum spdk_nvmf_subsystem_mode {
struct spdk_nvmf_listen_addr { struct spdk_nvmf_listen_addr {
char *traddr; char *traddr;
char *trsvcid; char *trsvcid;
const struct spdk_nvmf_transport *transport; char *trname;
TAILQ_ENTRY(spdk_nvmf_listen_addr) link; TAILQ_ENTRY(spdk_nvmf_listen_addr) link;
}; };
@ -172,8 +171,7 @@ nvmf_find_subsystem(const char *subnqn, const char *hostnqn);
int int
spdk_nvmf_subsystem_add_listener(struct spdk_nvmf_subsystem *subsystem, spdk_nvmf_subsystem_add_listener(struct spdk_nvmf_subsystem *subsystem,
const struct spdk_nvmf_transport *transport, char *trname, char *traddr, char *trsvcid);
char *traddr, char *trsvcid);
int int
spdk_nvmf_subsystem_add_host(struct spdk_nvmf_subsystem *subsystem, spdk_nvmf_subsystem_add_host(struct spdk_nvmf_subsystem *subsystem,
@ -194,9 +192,6 @@ const char *spdk_nvmf_subsystem_get_nqn(struct spdk_nvmf_subsystem *subsystem);
enum spdk_nvmf_subtype spdk_nvmf_subsystem_get_type(struct spdk_nvmf_subsystem *subsystem); enum spdk_nvmf_subtype spdk_nvmf_subsystem_get_type(struct spdk_nvmf_subsystem *subsystem);
enum spdk_nvmf_subsystem_mode spdk_nvmf_subsystem_get_mode(struct spdk_nvmf_subsystem *subsystem); enum spdk_nvmf_subsystem_mode spdk_nvmf_subsystem_get_mode(struct spdk_nvmf_subsystem *subsystem);
const struct spdk_nvmf_transport *spdk_nvmf_transport_get(const char *name);
const char *spdk_nvmf_transport_get_name(const struct spdk_nvmf_transport *transport);
void spdk_nvmf_acceptor_poll(void); void spdk_nvmf_acceptor_poll(void);
void spdk_nvmf_handle_connect(struct spdk_nvmf_request *req); void spdk_nvmf_handle_connect(struct spdk_nvmf_request *req);

View File

@ -173,6 +173,7 @@ spdk_nvmf_delete_subsystem(struct spdk_nvmf_subsystem *subsystem)
TAILQ_REMOVE(&subsystem->listen_addrs, listen_addr, link); TAILQ_REMOVE(&subsystem->listen_addrs, listen_addr, link);
free(listen_addr->traddr); free(listen_addr->traddr);
free(listen_addr->trsvcid); free(listen_addr->trsvcid);
free(listen_addr->trname);
free(listen_addr); free(listen_addr);
subsystem->num_listen_addrs--; subsystem->num_listen_addrs--;
} }
@ -199,12 +200,17 @@ spdk_nvmf_delete_subsystem(struct spdk_nvmf_subsystem *subsystem)
int int
spdk_nvmf_subsystem_add_listener(struct spdk_nvmf_subsystem *subsystem, spdk_nvmf_subsystem_add_listener(struct spdk_nvmf_subsystem *subsystem,
const struct spdk_nvmf_transport *transport, char *trname, char *traddr, char *trsvcid)
char *traddr, char *trsvcid)
{ {
struct spdk_nvmf_listen_addr *listen_addr; struct spdk_nvmf_listen_addr *listen_addr;
const struct spdk_nvmf_transport *transport;
int rc; int rc;
transport = spdk_nvmf_transport_get(trname);
if (!transport) {
return -1;
}
listen_addr = calloc(1, sizeof(*listen_addr)); listen_addr = calloc(1, sizeof(*listen_addr));
if (!listen_addr) { if (!listen_addr) {
return -1; return -1;
@ -223,7 +229,13 @@ spdk_nvmf_subsystem_add_listener(struct spdk_nvmf_subsystem *subsystem,
return -1; return -1;
} }
listen_addr->transport = transport; listen_addr->trname = strdup(trname);
if (!listen_addr->trname) {
free(listen_addr->traddr);
free(listen_addr->trsvcid);
free(listen_addr);
return -1;
}
TAILQ_INSERT_HEAD(&subsystem->listen_addrs, listen_addr, link); TAILQ_INSERT_HEAD(&subsystem->listen_addrs, listen_addr, link);
subsystem->num_listen_addrs++; subsystem->num_listen_addrs++;
@ -280,6 +292,7 @@ spdk_format_discovery_log(struct spdk_nvmf_discovery_log_page *disc_log, uint32_
struct spdk_nvmf_subsystem *subsystem; struct spdk_nvmf_subsystem *subsystem;
struct spdk_nvmf_listen_addr *listen_addr; struct spdk_nvmf_listen_addr *listen_addr;
struct spdk_nvmf_discovery_log_page_entry *entry; struct spdk_nvmf_discovery_log_page_entry *entry;
const struct spdk_nvmf_transport *transport;
TAILQ_FOREACH(subsystem, &g_subsystems, entries) { TAILQ_FOREACH(subsystem, &g_subsystems, entries) {
if (subsystem->subtype == SPDK_NVMF_SUBTYPE_DISCOVERY) { if (subsystem->subtype == SPDK_NVMF_SUBTYPE_DISCOVERY) {
@ -300,7 +313,10 @@ spdk_format_discovery_log(struct spdk_nvmf_discovery_log_page *disc_log, uint32_
entry->subtype = subsystem->subtype; entry->subtype = subsystem->subtype;
snprintf(entry->subnqn, sizeof(entry->subnqn), "%s", subsystem->subnqn); snprintf(entry->subnqn, sizeof(entry->subnqn), "%s", subsystem->subnqn);
listen_addr->transport->listen_addr_discover(listen_addr, entry); transport = spdk_nvmf_transport_get(listen_addr->trname);
assert(transport != NULL);
transport->listen_addr_discover(listen_addr, entry);
} }
numrec++; numrec++;
} }

View File

@ -108,9 +108,3 @@ spdk_nvmf_transport_get(const char *name)
return NULL; return NULL;
} }
const char *
spdk_nvmf_transport_get_name(const struct spdk_nvmf_transport *transport)
{
return transport->name;
}

View File

@ -122,6 +122,8 @@ struct spdk_nvmf_transport {
int spdk_nvmf_transport_init(void); int spdk_nvmf_transport_init(void);
int spdk_nvmf_transport_fini(void); int spdk_nvmf_transport_fini(void);
const struct spdk_nvmf_transport *spdk_nvmf_transport_get(const char *name);
extern const struct spdk_nvmf_transport spdk_nvmf_transport_rdma; extern const struct spdk_nvmf_transport spdk_nvmf_transport_rdma;
#endif /* SPDK_NVMF_TRANSPORT_H */ #endif /* SPDK_NVMF_TRANSPORT_H */

View File

@ -48,6 +48,12 @@ SPDK_LOG_REGISTER_TRACE_FLAG("nvmf", SPDK_TRACE_NVMF)
struct spdk_nvmf_globals g_nvmf_tgt; struct spdk_nvmf_globals g_nvmf_tgt;
const struct spdk_nvmf_transport *
spdk_nvmf_transport_get(const char *trname)
{
return NULL;
}
int32_t int32_t
spdk_nvme_ctrlr_process_admin_completions(struct spdk_nvme_ctrlr *ctrlr) spdk_nvme_ctrlr_process_admin_completions(struct spdk_nvme_ctrlr *ctrlr)
{ {