diff --git a/include/spdk/bdev_module.h b/include/spdk/bdev_module.h index 2c7e2b2ac..0c99b172c 100644 --- a/include/spdk/bdev_module.h +++ b/include/spdk/bdev_module.h @@ -509,7 +509,7 @@ struct spdk_bdev { /** * UUID for this bdev. * - * Fill with zeroes if no uuid is available. + * If not provided, it will be generated by bdev layer. */ struct spdk_uuid uuid; diff --git a/lib/bdev/bdev.c b/lib/bdev/bdev.c index 0bd63f061..b18737d0b 100644 --- a/lib/bdev/bdev.c +++ b/lib/bdev/bdev.c @@ -7231,21 +7231,22 @@ bdev_register(struct spdk_bdev *bdev) return ret; } - /* UUID has to be specified by the user or defined by bdev itself. - * Otherwise this field must remain empty, to indicate that this - * value cannot be depended upon. */ - if (!spdk_mem_all_zero(&bdev->uuid, sizeof(bdev->uuid))) { - /* Add the UUID alias only if it's different than the name */ - spdk_uuid_fmt_lower(uuid, sizeof(uuid), &bdev->uuid); - if (strcmp(bdev->name, uuid) != 0) { - ret = spdk_bdev_alias_add(bdev, uuid); - if (ret != 0) { - SPDK_ERRLOG("Unable to add uuid:%s alias for bdev %s\n", uuid, bdev->name); - bdev_name_del(&bdev->internal.bdev_name); - bdev_free_io_stat(bdev->internal.stat); - free(bdev_name); - return ret; - } + /* UUID may be specified by the user or defined by bdev itself. + * Otherwise it will be generated here, so this field will never be empty. */ + if (spdk_mem_all_zero(&bdev->uuid, sizeof(bdev->uuid))) { + spdk_uuid_generate(&bdev->uuid); + } + + /* Add the UUID alias only if it's different than the name */ + spdk_uuid_fmt_lower(uuid, sizeof(uuid), &bdev->uuid); + if (strcmp(bdev->name, uuid) != 0) { + ret = spdk_bdev_alias_add(bdev, uuid); + if (ret != 0) { + SPDK_ERRLOG("Unable to add uuid:%s alias for bdev %s\n", uuid, bdev->name); + bdev_name_del(&bdev->internal.bdev_name); + bdev_free_io_stat(bdev->internal.stat); + free(bdev_name); + return ret; } } diff --git a/lib/bdev/bdev_rpc.c b/lib/bdev/bdev_rpc.c index dfac33d4f..a6769b820 100644 --- a/lib/bdev/bdev_rpc.c +++ b/lib/bdev/bdev_rpc.c @@ -663,6 +663,7 @@ rpc_dump_bdev_info(void *ctx, struct spdk_bdev *bdev) struct spdk_bdev_alias *tmp; uint64_t qos_limits[SPDK_BDEV_QOS_NUM_RATE_LIMIT_TYPES]; struct spdk_memory_domain **domains; + char uuid_str[SPDK_UUID_STRING_LEN]; int i, rc; spdk_json_write_object_begin(w); @@ -683,12 +684,8 @@ rpc_dump_bdev_info(void *ctx, struct spdk_bdev *bdev) spdk_json_write_named_uint64(w, "num_blocks", spdk_bdev_get_num_blocks(bdev)); - if (!spdk_mem_all_zero(&bdev->uuid, sizeof(bdev->uuid))) { - char uuid_str[SPDK_UUID_STRING_LEN]; - - spdk_uuid_fmt_lower(uuid_str, sizeof(uuid_str), &bdev->uuid); - spdk_json_write_named_string(w, "uuid", uuid_str); - } + spdk_uuid_fmt_lower(uuid_str, sizeof(uuid_str), &bdev->uuid); + spdk_json_write_named_string(w, "uuid", uuid_str); if (spdk_bdev_get_md_size(bdev) != 0) { spdk_json_write_named_uint32(w, "md_size", spdk_bdev_get_md_size(bdev)); diff --git a/test/spdkcli/match_files/spdkcli_details_vhost.test.match b/test/spdkcli/match_files/spdkcli_details_vhost.test.match index 81982ad97..f191ff383 100644 --- a/test/spdkcli/match_files/spdkcli_details_vhost.test.match +++ b/test/spdkcli/match_files/spdkcli_details_vhost.test.match @@ -1,5 +1,7 @@ { - "aliases": [], + "aliases": [ + "$(UUID)" + ], "assigned_rate_limits": { "r_mbytes_per_sec": $(N), "rw_ios_per_sec": $(N), @@ -30,5 +32,6 @@ "write": $(S), "write_zeroes": $(S) }, + "uuid": "$(UUID)", "zoned": false } diff --git a/test/spdkcli/match_files/spdkcli_raid.test.match b/test/spdkcli/match_files/spdkcli_raid.test.match index bc684a0f7..6b28608c2 100644 --- a/test/spdkcli/match_files/spdkcli_raid.test.match +++ b/test/spdkcli/match_files/spdkcli_raid.test.match @@ -9,7 +9,7 @@ o- bdevs ....................................................................... o- null ............................................................................................................... [Bdevs: 0] o- nvme ............................................................................................................... [Bdevs: 0] o- raid_volume ........................................................................................................ [Bdevs: 1] - | o- testraid $(S) [Size=16.0M, Not claimed] + | o- testraid $(S) [$(UUID), Size=16.0M, Not claimed] o- rbd ................................................................................................................ [Bdevs: 0] o- split_disk ......................................................................................................... [Bdevs: 0] o- uring .............................................................................................................. [Bdevs: 0] diff --git a/test/spdkcli/match_files/spdkcli_vhost.test.match b/test/spdkcli/match_files/spdkcli_vhost.test.match index 65e2bdd0b..9d1a5c287 100644 --- a/test/spdkcli/match_files/spdkcli_vhost.test.match +++ b/test/spdkcli/match_files/spdkcli_vhost.test.match @@ -1,11 +1,11 @@ o- / ......................................................................................................................... [...] o- bdevs ................................................................................................................... [...] | o- aio .............................................................................................................. [Bdevs: 2] - | | o- sample0 $(S) [Size=$(FP)M, Not claimed] - | | o- sample1 $(S) [Size=$(FP)M, Not claimed] + | | o- sample0 $(S) [$(UUID), Size=$(FP)M, Not claimed] + | | o- sample1 $(S) [$(UUID), Size=$(FP)M, Not claimed] | o- error ............................................................................................................ [Bdevs: 2] - | | o- EE_Malloc1 $(S) [Size=$(FP)M, Not claimed] - | | o- EE_Malloc4 $(S) [Size=$(FP)M, Not claimed] + | | o- EE_Malloc1 $(S) [$(UUID), Size=$(FP)M, Not claimed] + | | o- EE_Malloc4 $(S) [$(UUID), Size=$(FP)M, Not claimed] | o- iscsi ............................................................................................................ [Bdevs: 0] | o- logical_volume ................................................................................................... [Bdevs: 2] | | o- $(UUID) ................................................ [lvs0/lvol$(FP), Size=$(FP)M, Not claimed] @@ -21,15 +21,15 @@ o- / ........................................................................... | | o- null_bdev0 $(S) [$(UUID), Size=$(FP)M, Not claimed] | | o- null_bdev1 $(S) [$(UUID), Size=$(FP)M, Not claimed] | o- nvme ............................................................................................................. [Bdevs: 1] -$(OPT) | | o- Nvme0n1 $(S) [Size=$(S), Claimed] +$(OPT) | | o- Nvme0n1 $(S) [$(UUID), Size=$(S), Claimed] $(OPX) | | o- Nvme0n1 $(S) [$(UUID), Size=$(S), Claimed] | o- raid_volume ...................................................................................................... [Bdevs: 0] | o- rbd .............................................................................................................. [Bdevs: 0] | o- split_disk ....................................................................................................... [Bdevs: 4] - | | o- Nvme0n1p0 $(S) [Size=$(FP)G, Not claimed] - | | o- Nvme0n1p1 $(S) [Size=$(FP)G, Not claimed] - | | o- Nvme0n1p2 $(S) [Size=$(FP)G, Not claimed] - | | o- Nvme0n1p3 $(S) [Size=$(FP)G, Not claimed] + | | o- Nvme0n1p0 $(S) [$(UUID), Size=$(FP)G, Not claimed] + | | o- Nvme0n1p1 $(S) [$(UUID), Size=$(FP)G, Not claimed] + | | o- Nvme0n1p2 $(S) [$(UUID), Size=$(FP)G, Not claimed] + | | o- Nvme0n1p3 $(S) [$(UUID), Size=$(FP)G, Not claimed] | o- uring ............................................................................................................ [Bdevs: 0] | o- virtioblk_disk ................................................................................................... [Bdevs: 0] | o- virtioscsi_disk .................................................................................................. [Bdevs: 0]