Commit 20b6ea82 authored by Marcin Spiewak's avatar Marcin Spiewak Committed by Tomasz Zawadzki
Browse files

bdev/nvme: move uuid generation up



This is first patch in series that will implement
error code handling during disk uuid generation.
spdk_uuid_generate_sha1() function can return error
code other than 0 if SPDK_CONFIG_HAVE_UUID_GENERATE_SHA1
is not defined, and functions using it shall
be prepared to handle such error codes appropriatelly.

In this patch, the uuid generation functionality is
moved up in the code, to group operations that can fail
at beginning of the function.

Change-Id: Ieaad45f9b5232bbd785ab141105dfc7726fd4709
Signed-off-by: default avatarMarcin Spiewak <marcin.spiewak@intel.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/22290


Community-CI: Mellanox Build Bot
Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatarJim Harris <jim.harris@samsung.com>
Reviewed-by: default avatarTomasz Zawadzki <tomasz.zawadzki@intel.com>
parent 79606bee
Loading
Loading
Loading
Loading
+13 −13
Original line number Diff line number Diff line
@@ -4015,6 +4015,19 @@ nvme_disk_create(struct spdk_bdev *disk, const char *base_name,
		return -ENOTSUP;
	}

	nguid = spdk_nvme_ns_get_nguid(ns);
	if (!nguid) {
		uuid = spdk_nvme_ns_get_uuid(ns);
		if (uuid) {
			disk->uuid = *uuid;
		} else if (g_opts.generate_uuids) {
			spdk_strcpy_pad(sn_tmp, cdata->sn, SPDK_NVME_CTRLR_SN_LEN, '\0');
			disk->uuid = nvme_generate_uuid(sn_tmp, spdk_nvme_ns_get_id(ns));
		}
	} else {
		memcpy(&disk->uuid, nguid, sizeof(disk->uuid));
	}

	disk->name = spdk_sprintf_alloc("%sn%d", base_name, spdk_nvme_ns_get_id(ns));
	if (!disk->name) {
		return -ENOMEM;
@@ -4057,19 +4070,6 @@ nvme_disk_create(struct spdk_bdev *disk, const char *base_name,
	}
	disk->optimal_io_boundary = spdk_nvme_ns_get_optimal_io_boundary(ns);

	nguid = spdk_nvme_ns_get_nguid(ns);
	if (!nguid) {
		uuid = spdk_nvme_ns_get_uuid(ns);
		if (uuid) {
			disk->uuid = *uuid;
		} else if (g_opts.generate_uuids) {
			spdk_strcpy_pad(sn_tmp, cdata->sn, SPDK_NVME_CTRLR_SN_LEN, '\0');
			disk->uuid = nvme_generate_uuid(sn_tmp, spdk_nvme_ns_get_id(ns));
		}
	} else {
		memcpy(&disk->uuid, nguid, sizeof(disk->uuid));
	}

	nsdata = spdk_nvme_ns_get_data(ns);
	bs = spdk_nvme_ns_get_sector_size(ns);
	atomic_bs = bs;