Commit bb555ef1 authored by Ben Walker's avatar Ben Walker Committed by Tomasz Zawadzki
Browse files

bdev/nvme: Reverse order of checks in bdev_nvme_attach_controllers



Do simple validity checks first, then check for duplicate controllers.

Signed-off-by: default avatarBen Walker <benjamin.walker@intel.com>
Change-Id: Ic21d64574b37a3d9148e5cd6d5a7599449ea8fe1
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/9341


Community-CI: Broadcom CI <spdk-ci.pdl@broadcom.com>
Community-CI: Mellanox Build Bot
Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatarChangpeng Liu <changpeng.liu@intel.com>
Reviewed-by: default avatarPaul Luse <paul.e.luse@intel.com>
Reviewed-by: default avatarJim Harris <james.r.harris@intel.com>
Reviewed-by: default avatarJacek Kalwas <jacek.kalwas@intel.com>
parent ae2ea647
Loading
Loading
Loading
Loading
+7 −7
Original line number Diff line number Diff line
@@ -308,8 +308,6 @@ rpc_bdev_nvme_attach_controller(struct spdk_jsonrpc_request *request,
	rc = spdk_nvme_transport_id_parse_trtype(&trid.trtype, ctx->req.trtype);
	assert(rc == 0);

	ctrlr = nvme_ctrlr_get_by_name(ctx->req.name);

	/* Parse traddr */
	maxlen = sizeof(trid.traddr);
	len = strnlen(ctx->req.traddr, maxlen);
@@ -360,11 +358,6 @@ rpc_bdev_nvme_attach_controller(struct spdk_jsonrpc_request *request,
		memcpy(trid.subnqn, ctx->req.subnqn, len + 1);
	}

	if (ctrlr && (ctx->req.hostaddr || ctx->req.hostnqn || ctx->req.hostsvcid || ctx->req.prchk_guard ||
		      ctx->req.prchk_reftag)) {
		goto conflicting_arguments;
	}

	if (ctx->req.hostnqn) {
		snprintf(ctx->req.opts.hostnqn, sizeof(ctx->req.opts.hostnqn), "%s",
			 ctx->req.hostnqn);
@@ -392,6 +385,13 @@ rpc_bdev_nvme_attach_controller(struct spdk_jsonrpc_request *request,
		memcpy(hostid.hostsvcid, ctx->req.hostsvcid, len + 1);
	}

	ctrlr = nvme_ctrlr_get_by_name(ctx->req.name);

	if (ctrlr && (ctx->req.hostaddr || ctx->req.hostnqn || ctx->req.hostsvcid || ctx->req.prchk_guard ||
		      ctx->req.prchk_reftag)) {
		goto conflicting_arguments;
	}

	if (ctx->req.prchk_reftag) {
		prchk_flags |= SPDK_NVME_IO_FLAGS_PRCHK_REFTAG;
	}