Commit 7f128c75 authored by Seth Howell's avatar Seth Howell Committed by Ben Walker
Browse files

nvmf: don't implicitly create the transport in tgt listen.



In order to prepare for multiple transports, the nvmf tgt should never
implicitly create a transport when listen is called.

Change-Id: If1286e7e3f7bce422a4acd66390852736113df7a
Signed-off-by: default avatarSeth Howell <seth.howell@intel.com>
Reviewed-on: https://review.gerrithub.io/430160


Chandler-Test-Pool: SPDK Automated Test System <sys_sgsw@intel.com>
Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatarJim Harris <james.r.harris@intel.com>
Reviewed-by: default avatarBen Walker <benjamin.walker@intel.com>
parent 28f26abf
Loading
Loading
Loading
Loading
+10 −23
Original line number Diff line number Diff line
@@ -506,31 +506,22 @@ spdk_nvmf_tgt_listen(struct spdk_nvmf_tgt *tgt,
		     void *cb_arg)
{
	struct spdk_nvmf_transport *transport;
	const char *trtype;
	int rc;
	bool propagate = false;

	transport = spdk_nvmf_tgt_get_transport(tgt, trid->trtype);
	if (!transport) {
		struct spdk_nvmf_transport_opts opts;

		opts.max_queue_depth = tgt->opts.max_queue_depth;
		opts.max_qpairs_per_ctrlr = tgt->opts.max_qpairs_per_ctrlr;
		opts.in_capsule_data_size = tgt->opts.in_capsule_data_size;
		opts.max_io_size = tgt->opts.max_io_size;
		opts.io_unit_size = tgt->opts.io_unit_size;
		/* use max_queue depth since tgt. opts. doesn't have max_aq_depth */
		opts.max_aq_depth = tgt->opts.max_queue_depth;

		transport = spdk_nvmf_transport_create(trid->trtype, &opts);
		if (!transport) {
			SPDK_ERRLOG("Transport initialization failed\n");
		trtype = spdk_nvme_transport_id_trtype_str(trid->trtype);
		if (trtype != NULL) {
			SPDK_ERRLOG("Unable to listen on transport %s. The transport must be created first.\n", trtype);
		} else {
			SPDK_ERRLOG("The specified trtype %d is unknown. Please make sure that it is properly registered.\n",
				    trid->trtype);
		}
		cb_fn(cb_arg, -EINVAL);
		return;
	}

		propagate = true;
	}

	rc = spdk_nvmf_transport_listen(transport, trid);
	if (rc < 0) {
		SPDK_ERRLOG("Unable to listen on address '%s'\n", trid->traddr);
@@ -540,12 +531,8 @@ spdk_nvmf_tgt_listen(struct spdk_nvmf_tgt *tgt,

	tgt->discovery_genctr++;

	if (propagate) {
		spdk_nvmf_tgt_add_transport(tgt, transport, cb_fn, cb_arg);
	} else {
	cb_fn(cb_arg, 0);
}
}

struct spdk_nvmf_tgt_add_transport_ctx {
	struct spdk_nvmf_tgt *tgt;