summaryrefslogtreecommitdiffstats
path: root/common
diff options
context:
space:
mode:
authorMichael Olbrich <m.olbrich@pengutronix.de>2022-02-07 10:49:47 +0100
committerSascha Hauer <s.hauer@pengutronix.de>2022-02-08 09:09:59 +0100
commit62295dfdb43eb421b7c8b119994df12b4e4879ef (patch)
tree017a33055811bc27bd1284f32cb45690d429034f /common
parent240bf4f87471f4d15e97731fbe120f92ddd4ad16 (diff)
downloadbarebox-62295dfdb43eb421b7c8b119994df12b4e4879ef.tar.gz
barebox-62295dfdb43eb421b7c8b119994df12b4e4879ef.tar.xz
cdev: add diskuuid support
This allows identifying disks by UUID. For disks with GPT the disk GUID is used. For DOS partition tables the NT signature ist used, similar to how the partuuid is generated. Signed-off-by: Michael Olbrich <m.olbrich@pengutronix.de> Link: https://lore.barebox.org/20220124100458.2924679-3-m.olbrich@pengutronix.de Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de> Link: https://lore.barebox.org/20220207094953.949868-2-s.hauer@pengutronix.de Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'common')
-rw-r--r--common/partitions/dos.c3
-rw-r--r--common/partitions/efi.c2
2 files changed, 5 insertions, 0 deletions
diff --git a/common/partitions/dos.c b/common/partitions/dos.c
index 597d7bf9bc..566c8dd949 100644
--- a/common/partitions/dos.c
+++ b/common/partitions/dos.c
@@ -182,6 +182,9 @@ static void dos_partition(void *buf, struct block_device *blk,
struct disk_signature_priv *dsp;
uint32_t signature = get_unaligned_le32(buf + 0x1b8);
+ if (signature)
+ sprintf(blk->cdev.uuid, "%08x", signature);
+
table = (struct partition_entry *)&buffer[446];
for (i = 0; i < 4; i++) {
diff --git a/common/partitions/efi.c b/common/partitions/efi.c
index 6d811bfb3b..0787b93f12 100644
--- a/common/partitions/efi.c
+++ b/common/partitions/efi.c
@@ -445,6 +445,8 @@ static void efi_partition(void *buf, struct block_device *blk,
return;
}
+ snprintf(blk->cdev.uuid, sizeof(blk->cdev.uuid), "%pUl", &gpt->disk_guid);
+
nb_part = le32_to_cpu(gpt->num_partition_entries);
if (nb_part > MAX_PARTITION) {