nvmf: store transport in listener structure

Avoid having to look up transports during discovery later.

Change-Id: I0207a822f05b02de4798d3e966603c073ea14062
Signed-off-by: Daniel Verkamp <daniel.verkamp@intel.com>
Reviewed-on: https://review.gerrithub.io/377991
Reviewed-by: Changpeng Liu <changpeng.liu@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Ziye Yang <optimistyzy@gmail.com>
Tested-by: SPDK Automated Test System <sys_sgsw@intel.com>
This commit is contained in:
Daniel Verkamp 2017-09-11 13:35:39 -07:00
parent 2453352025
commit 65cac5fbe0
3 changed files with 10 additions and 5 deletions

View File

@ -54,7 +54,6 @@ nvmf_update_discovery_log(struct spdk_nvmf_tgt *tgt)
struct spdk_nvmf_subsystem *subsystem; struct spdk_nvmf_subsystem *subsystem;
struct spdk_nvmf_listener *listener; struct spdk_nvmf_listener *listener;
struct spdk_nvmf_discovery_log_page_entry *entry; struct spdk_nvmf_discovery_log_page_entry *entry;
struct spdk_nvmf_transport *transport;
struct spdk_nvmf_discovery_log_page *disc_log; struct spdk_nvmf_discovery_log_page *disc_log;
size_t cur_size; size_t cur_size;
@ -94,10 +93,7 @@ nvmf_update_discovery_log(struct spdk_nvmf_tgt *tgt)
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);
transport = spdk_nvmf_tgt_get_transport(tgt, listener->trid.trtype); spdk_nvmf_transport_listener_discover(listener->transport, &listener->trid, entry);
assert(transport != NULL);
spdk_nvmf_transport_listener_discover(transport, &listener->trid, entry);
numrec++; numrec++;
} }

View File

@ -66,6 +66,7 @@ struct spdk_nvmf_host {
struct spdk_nvmf_listener { struct spdk_nvmf_listener {
struct spdk_nvme_transport_id trid; struct spdk_nvme_transport_id trid;
struct spdk_nvmf_transport *transport;
TAILQ_ENTRY(spdk_nvmf_listener) link; TAILQ_ENTRY(spdk_nvmf_listener) link;
}; };

View File

@ -259,14 +259,22 @@ int
spdk_nvmf_subsystem_add_listener(struct spdk_nvmf_subsystem *subsystem, spdk_nvmf_subsystem_add_listener(struct spdk_nvmf_subsystem *subsystem,
struct spdk_nvme_transport_id *trid) struct spdk_nvme_transport_id *trid)
{ {
struct spdk_nvmf_transport *transport;
struct spdk_nvmf_listener *listener; struct spdk_nvmf_listener *listener;
transport = spdk_nvmf_tgt_get_transport(subsystem->tgt, trid->trtype);
if (transport == NULL) {
SPDK_ERRLOG("Unknown transport type %d\n", trid->trtype);
return -1;
}
listener = calloc(1, sizeof(*listener)); listener = calloc(1, sizeof(*listener));
if (!listener) { if (!listener) {
return -1; return -1;
} }
listener->trid = *trid; listener->trid = *trid;
listener->transport = transport;
TAILQ_INSERT_HEAD(&subsystem->listeners, listener, link); TAILQ_INSERT_HEAD(&subsystem->listeners, listener, link);