Commit bbfcb094 authored by Daniel Verkamp's avatar Daniel Verkamp Committed by Ben Walker
Browse files

nvmf_tgt: use public API to set serial number



Also move the validation of serial number length into the library.

Change-Id: Ibc9384fc1fccb87bd15b75da7f3942570900bd96
Signed-off-by: default avatarDaniel Verkamp <daniel.verkamp@intel.com>
Reviewed-on: https://review.gerrithub.io/363304


Tested-by: default avatarSPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: default avatarBen Walker <benjamin.walker@intel.com>
parent 7999c01b
Loading
Loading
Loading
Loading
+4 −19
Original line number Diff line number Diff line
@@ -291,20 +291,6 @@ attach_cb(void *cb_ctx, const struct spdk_nvme_transport_id *trid,
	ctx->found = true;
}

static int
spdk_nvmf_validate_sn(const char *sn)
{
	size_t len;

	len = strlen(sn);
	if (len > MAX_SN_LEN) {
		SPDK_ERRLOG("Invalid sn \"%s\": length %zu > max %d\n", sn, len, MAX_SN_LEN);
		return -1;
	}

	return 0;
}

static int
spdk_nvmf_allocate_lcore(uint64_t mask, uint32_t lcore)
{
@@ -590,16 +576,15 @@ spdk_nvmf_construct_subsystem(const char *name,
			SPDK_ERRLOG("Subsystem %s: missing serial number\n", name);
			goto error;
		}
		if (spdk_nvmf_validate_sn(sn) != 0) {
			goto error;
		}

		if (num_devs > MAX_VIRTUAL_NAMESPACE) {
			goto error;
		}

		subsystem->dev.virt.ns_count = 0;
		snprintf(subsystem->dev.virt.sn, MAX_SN_LEN, "%s", sn);
		if (spdk_nvmf_subsystem_set_sn(subsystem, sn)) {
			SPDK_ERRLOG("Subsystem %s: invalid serial number '%s'\n", name, sn);
			goto error;
		}

		for (i = 0; i < num_devs; i++) {
			namespace = dev_list[i];
+10 −0
Original line number Diff line number Diff line
@@ -412,10 +412,20 @@ spdk_nvmf_subsystem_add_ns(struct spdk_nvmf_subsystem *subsystem, struct spdk_bd
int
spdk_nvmf_subsystem_set_sn(struct spdk_nvmf_subsystem *subsystem, const char *sn)
{
	size_t len, max_len;

	if (subsystem->mode != NVMF_SUBSYSTEM_MODE_VIRTUAL) {
		return -1;
	}

	max_len = sizeof(subsystem->dev.virt.sn) - 1;
	len = strlen(sn);
	if (len > max_len) {
		SPDK_TRACELOG(SPDK_TRACE_NVMF, "Invalid sn \"%s\": length %zu > max %zu\n",
			      sn, len, max_len);
		return -1;
	}

	snprintf(subsystem->dev.virt.sn, sizeof(subsystem->dev.virt.sn), "%s", sn);

	return 0;