bdev: always generate UUIDs

Make sure UUID is present for every bdev, even ephemeral ones.
Furthermore, this change removes assumption that bdev UUID
may remain empty.

Change-Id: I924c1ba9dedfe88a05044bb1073f28085735b1c1
Signed-off-by: Krzysztof Karas <krzysztof.karas@intel.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/17106
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Artur Paszkiewicz <artur.paszkiewicz@intel.com>
Community-CI: Mellanox Build Bot
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
This commit is contained in:
Krzysztof Karas 2023-03-06 14:12:58 +01:00 committed by Konrad Sztyber
parent 0cd5af7143
commit 11dc297c1b
6 changed files with 34 additions and 33 deletions

View File

@ -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;

View File

@ -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;
}
}

View File

@ -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));

View File

@ -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
}

View File

@ -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]

View File

@ -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]