Commit 6428de9e authored by Ben Walker's avatar Ben Walker Committed by Jim Harris
Browse files

nvmf: Remove spdk_nvmf_listen_addr



Everywhere this is used, we can just use
spdk_nvme_transport_id instead.

Change-Id: I407c812cd6a1ca3afcb3d1fe87c7e22183b09d7a
Signed-off-by: default avatarBen Walker <benjamin.walker@intel.com>
Reviewed-on: https://review.gerrithub.io/375461


Tested-by: default avatarSPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: default avatarDaniel Verkamp <daniel.verkamp@intel.com>
Reviewed-by: default avatarJim Harris <james.r.harris@intel.com>
parent ff4f68a5
Loading
Loading
Loading
Loading
+4 −5
Original line number Diff line number Diff line
@@ -362,8 +362,7 @@ spdk_nvmf_construct_subsystem(const char *name, int32_t lcore,
{
	struct spdk_nvmf_subsystem *subsystem;
	struct nvmf_tgt_subsystem *app_subsys;
	struct spdk_nvmf_listen_addr *listen_addr;
	int i;
	int i, rc;
	uint64_t mask;
	struct spdk_bdev *bdev;
	const char *namespace;
@@ -429,8 +428,8 @@ spdk_nvmf_construct_subsystem(const char *name, int32_t lcore,
		snprintf(trid.traddr, sizeof(trid.traddr), "%s", addresses[i].traddr);
		snprintf(trid.trsvcid, sizeof(trid.trsvcid), "%s", addresses[i].trsvcid);

		listen_addr = spdk_nvmf_tgt_listen(g_tgt, &trid);
		if (listen_addr == NULL) {
		rc = spdk_nvmf_tgt_listen(g_tgt, &trid);
		if (rc) {
			SPDK_ERRLOG("Failed to listen on transport %s, adrfam %s, traddr %s, trsvcid %s\n",
				    addresses[i].transport,
				    addresses[i].adrfam,
@@ -438,7 +437,7 @@ spdk_nvmf_construct_subsystem(const char *name, int32_t lcore,
				    addresses[i].trsvcid);
			goto error;
		}
		spdk_nvmf_subsystem_add_listener(subsystem, listen_addr);
		spdk_nvmf_subsystem_add_listener(subsystem, &trid);
	}

	/* Parse Host sections */
+11 −11
Original line number Diff line number Diff line
@@ -77,8 +77,13 @@ void spdk_nvmf_tgt_destroy(struct spdk_nvmf_tgt *tgt);
 * The connections will be matched with a subsystem, which may or may not allow
 * the connection based on a subsystem-specific whitelist. See
 * spdk_nvmf_subsystem_add_host() and spdk_nvmf_subsystem_add_listener()
 *
 * \param tgt The target associated with this listen address
 * \param trid The address to listen at
 *
 * \return 0 on success. Negated errno on failure.
 */
struct spdk_nvmf_listen_addr *spdk_nvmf_tgt_listen(struct spdk_nvmf_tgt *tgt,
int spdk_nvmf_tgt_listen(struct spdk_nvmf_tgt *tgt,
			 struct spdk_nvme_transport_id *trid);

/**
@@ -98,11 +103,6 @@ struct spdk_nvmf_listener;
typedef void (*spdk_nvmf_subsystem_connect_fn)(void *cb_ctx, struct spdk_nvmf_request *req);
typedef void (*spdk_nvmf_subsystem_disconnect_fn)(void *cb_ctx, struct spdk_nvmf_qpair *qpair);

struct spdk_nvmf_listen_addr {
	struct spdk_nvme_transport_id		trid;
	TAILQ_ENTRY(spdk_nvmf_listen_addr)	link;
};

/*
 * The NVMf subsystem, as indicated in the specification, is a collection
 * of controllers.  Any individual controller has
@@ -180,21 +180,21 @@ const char *spdk_nvmf_host_get_nqn(struct spdk_nvmf_host *host);
 * Accept new connections on the address provided
 *
 * \param subsystem Subsystem to add listener to
 * \param listen_addr The address to listen on.
 * \param trid The address to accept connections from
 * \return 0 on success. Negated errno value on failure.
 */
int spdk_nvmf_subsystem_add_listener(struct spdk_nvmf_subsystem *subsystem,
				     struct spdk_nvmf_listen_addr *listen_addr);
				     struct spdk_nvme_transport_id *trid);

/**
 * Check if connections originated from the given address are allowed to connect to the subsystem.
 *
 * \param subsystem The subsystem to query
 * \param listen_addr The listen address
 * \param trid The listen address
 * \return true if allowed, false if not.
 */
bool spdk_nvmf_subsystem_listener_allowed(struct spdk_nvmf_subsystem *subsystem,
		struct spdk_nvmf_listen_addr *listen_addr);
		struct spdk_nvme_transport_id *trid);

/**
 * Return the first allowed listen address in the subsystem.
+2 −5
Original line number Diff line number Diff line
@@ -56,7 +56,6 @@ nvmf_update_discovery_log(struct spdk_nvmf_tgt *tgt)
	uint64_t numrec = 0;
	struct spdk_nvmf_subsystem *subsystem;
	struct spdk_nvmf_listener *listener;
	struct spdk_nvmf_listen_addr *listen_addr;
	struct spdk_nvmf_discovery_log_page_entry *entry;
	struct spdk_nvmf_transport *transport;
	struct spdk_nvmf_discovery_log_page *disc_log;
@@ -87,8 +86,6 @@ nvmf_update_discovery_log(struct spdk_nvmf_tgt *tgt)
				break;
			}

			listen_addr = listener->listen_addr;

			disc_log = new_log_page;
			cur_size = new_size;

@@ -100,10 +97,10 @@ nvmf_update_discovery_log(struct spdk_nvmf_tgt *tgt)
			entry->subtype = subsystem->subtype;
			snprintf(entry->subnqn, sizeof(entry->subnqn), "%s", subsystem->subnqn);

			transport = spdk_nvmf_tgt_get_transport(tgt, listen_addr->trid.trtype);
			transport = spdk_nvmf_tgt_get_transport(tgt, listener->trid.trtype);
			assert(transport != NULL);

			spdk_nvmf_transport_listen_addr_discover(transport, listen_addr, entry);
			spdk_nvmf_transport_listener_discover(transport, &listener->trid, entry);

			numrec++;
		}
+4 −57
Original line number Diff line number Diff line
@@ -81,7 +81,6 @@ spdk_nvmf_tgt_create(struct spdk_nvmf_tgt_opts *opts)
	tgt->discovery_log_page_size = 0;
	tgt->current_subsystem_id = 0;
	TAILQ_INIT(&tgt->subsystems);
	TAILQ_INIT(&tgt->listen_addrs);
	TAILQ_INIT(&tgt->transports);

	SPDK_DEBUGLOG(SPDK_TRACE_NVMF, "Max Queue Pairs Per Controller: %d\n",
@@ -97,63 +96,41 @@ spdk_nvmf_tgt_create(struct spdk_nvmf_tgt_opts *opts)
void
spdk_nvmf_tgt_destroy(struct spdk_nvmf_tgt *tgt)
{
	struct spdk_nvmf_listen_addr *listen_addr, *listen_addr_tmp;
	struct spdk_nvmf_transport *transport, *transport_tmp;

	TAILQ_FOREACH_SAFE(listen_addr, &tgt->listen_addrs, link, listen_addr_tmp) {
		TAILQ_REMOVE(&tgt->listen_addrs, listen_addr, link);
		tgt->discovery_genctr++;

		spdk_nvmf_listen_addr_destroy(listen_addr);
	}

	TAILQ_FOREACH_SAFE(transport, &tgt->transports, link, transport_tmp) {
		TAILQ_REMOVE(&tgt->transports, transport, link);
		spdk_nvmf_transport_destroy(transport);
	}
}

struct spdk_nvmf_listen_addr *
int
spdk_nvmf_tgt_listen(struct spdk_nvmf_tgt *tgt,
		     struct spdk_nvme_transport_id *trid)
{
	struct spdk_nvmf_listen_addr *listen_addr;
	struct spdk_nvmf_transport *transport;
	int rc;

	TAILQ_FOREACH(listen_addr, &tgt->listen_addrs, link) {
		if (spdk_nvme_transport_id_compare(&listen_addr->trid, trid) == 0) {
			return listen_addr;
		}
	}

	transport = spdk_nvmf_tgt_get_transport(tgt, trid->trtype);
	if (!transport) {
		transport = spdk_nvmf_transport_create(tgt, trid->trtype);
		if (!transport) {
			SPDK_ERRLOG("Transport initialization failed\n");
			return NULL;
			return -EINVAL;
		}
		TAILQ_INSERT_TAIL(&tgt->transports, transport, link);
	}


	listen_addr = spdk_nvmf_listen_addr_create(trid);
	if (!listen_addr) {
		return NULL;
	}

	rc = spdk_nvmf_transport_listen(transport, trid);
	if (rc < 0) {
		free(listen_addr);
		SPDK_ERRLOG("Unable to listen on address '%s'\n", trid->traddr);
		return NULL;
		return -EINVAL;
	}

	TAILQ_INSERT_HEAD(&tgt->listen_addrs, listen_addr, link);
	tgt->discovery_genctr++;

	return listen_addr;
	return 0;
}

struct spdk_nvmf_subsystem *
@@ -232,36 +209,6 @@ spdk_nvmf_tgt_get_transport(struct spdk_nvmf_tgt *tgt, enum spdk_nvme_transport_
	return NULL;
}

struct spdk_nvmf_listen_addr *
spdk_nvmf_listen_addr_create(struct spdk_nvme_transport_id *trid)
{
	struct spdk_nvmf_listen_addr *listen_addr;

	listen_addr = calloc(1, sizeof(*listen_addr));
	if (!listen_addr) {
		return NULL;
	}

	listen_addr->trid = *trid;

	return listen_addr;
}

void
spdk_nvmf_listen_addr_destroy(struct spdk_nvmf_listen_addr *addr)
{
	struct spdk_nvmf_transport *transport;

	transport = spdk_nvmf_tgt_get_transport(&g_nvmf_tgt, addr->trid.trtype);
	if (!transport) {
		SPDK_ERRLOG("Attempted to destroy listener without a valid transport\n");
		return;
	}

	spdk_nvmf_transport_stop_listen(transport, &addr->trid);
	free(addr);
}

void
spdk_nvmf_tgt_accept(struct spdk_nvmf_tgt *tgt)
{
+1 −5
Original line number Diff line number Diff line
@@ -53,7 +53,6 @@ struct spdk_nvmf_tgt {
	TAILQ_HEAD(, spdk_nvmf_subsystem)	subsystems;
	struct spdk_nvmf_discovery_log_page	*discovery_log_page;
	size_t					discovery_log_page_size;
	TAILQ_HEAD(, spdk_nvmf_listen_addr)	listen_addrs;
	uint32_t				current_subsystem_id;
	TAILQ_HEAD(, spdk_nvmf_transport)	transports;
};
@@ -64,7 +63,7 @@ struct spdk_nvmf_host {
};

struct spdk_nvmf_listener {
	struct spdk_nvmf_listen_addr	*listen_addr;
	struct spdk_nvme_transport_id	trid;
	TAILQ_ENTRY(spdk_nvmf_listener)	link;
};

@@ -111,9 +110,6 @@ struct spdk_nvmf_subsystem {

extern struct spdk_nvmf_tgt g_nvmf_tgt;

struct spdk_nvmf_listen_addr *spdk_nvmf_listen_addr_create(struct spdk_nvme_transport_id *trid);
void spdk_nvmf_listen_addr_destroy(struct spdk_nvmf_listen_addr *addr);

uint16_t spdk_nvmf_tgt_gen_cntlid(struct spdk_nvmf_tgt *tgt);

struct spdk_nvmf_transport *spdk_nvmf_tgt_get_transport(struct spdk_nvmf_tgt *tgt,
Loading