summaryrefslogtreecommitdiff
path: root/cmd
diff options
context:
space:
mode:
authorHeinrich Schuchardt <heinrich.schuchardt@canonical.com>2023-09-02 09:35:24 +0200
committerTom Rini <trini@konsulko.com>2023-09-11 16:34:19 -0400
commitf5e4b056c47215cdbe8d8e30a12b036b7a6afa8d (patch)
tree51c12c17095b0724f2d6fee66bee932e0b2d7047 /cmd
parent69f4d37302583c3a2c8445ff69826c52c6fce7e3 (diff)
downloadu-boot-f5e4b056c47215cdbe8d8e30a12b036b7a6afa8d.tar.gz
u-boot-f5e4b056c47215cdbe8d8e30a12b036b7a6afa8d.tar.bz2
u-boot-f5e4b056c47215cdbe8d8e30a12b036b7a6afa8d.zip
cmd: gpt: fix gpt read
To partition a block device the partition type GUIDs are needed but 'gpt read' does not provide these. Add the missing parts. Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com> Reviewed-by: Simon Glass <sjg@chromium.org>
Diffstat (limited to 'cmd')
-rw-r--r--cmd/gpt.c32
1 files changed, 15 insertions, 17 deletions
diff --git a/cmd/gpt.c b/cmd/gpt.c
index c404785c1d..d7e96529a6 100644
--- a/cmd/gpt.c
+++ b/cmd/gpt.c
@@ -181,11 +181,10 @@ static int calc_parts_list_len(int numparts)
/* see part.h for definition of struct disk_partition */
partlistlen += numparts * (strlen("start=0x,") + lbaint_size);
partlistlen += numparts * (strlen("size=0x,") + lbaint_size);
-#ifdef CONFIG_PARTITION_TYPE_GUID
- partlistlen += numparts * (strlen("type=,") + UUID_STR_LEN + 1);
-#endif
if (IS_ENABLED(CONFIG_PARTITION_UUIDS))
- partlistlen += numparts * (strlen("uuid=;") + UUID_STR_LEN);
+ partlistlen += numparts * (strlen("uuid=,") + UUID_STR_LEN);
+ if (IS_ENABLED(CONFIG_PARTITION_TYPE_GUID))
+ partlistlen += numparts * (strlen("type=;") + UUID_STR_LEN);
debug("Length of partitions_list is %d for %d partitions\n",
partlistlen, numparts);
return partlistlen;
@@ -221,14 +220,12 @@ static struct disk_part *allocate_disk_part(struct disk_partition *info,
PART_TYPE_LEN);
newpart->gpt_part_info.type[PART_TYPE_LEN - 1] = '\0';
newpart->gpt_part_info.bootable = info->bootable;
-#ifdef CONFIG_PARTITION_TYPE_GUID
- strncpy(newpart->gpt_part_info.type_guid, (const char *)info->type_guid,
- UUID_STR_LEN);
- newpart->gpt_part_info.type_guid[UUID_STR_LEN] = '\0';
-#endif
if (IS_ENABLED(CONFIG_PARTITION_UUIDS))
disk_partition_set_uuid(&newpart->gpt_part_info,
disk_partition_uuid(info));
+ if (IS_ENABLED(CONFIG_PARTITION_TYPE_GUID))
+ disk_partition_set_type_guid(&newpart->gpt_part_info,
+ disk_partition_type_guid(info));
newpart->partnum = partnum;
return newpart;
@@ -264,12 +261,12 @@ static void print_gpt_info(void)
curr->gpt_part_info.name);
printf("Type %s, bootable %d\n", curr->gpt_part_info.type,
curr->gpt_part_info.bootable & PART_BOOTABLE);
-#ifdef CONFIG_PARTITION_TYPE_GUID
- printf("Type GUID %s\n", curr->gpt_part_info.type_guid);
-#endif
if (CONFIG_IS_ENABLED(PARTITION_UUIDS))
printf("UUID %s\n",
disk_partition_uuid(&curr->gpt_part_info));
+ if (IS_ENABLED(CONFIG_PARTITION_TYPE_GUID))
+ printf("Type GUID %s\n",
+ disk_partition_type_guid(&curr->gpt_part_info));
printf("\n");
}
}
@@ -314,11 +311,12 @@ static int create_gpt_partitions_list(int numparts, const char *guid,
curr->gpt_part_info.blksz);
strncat(partitions_list, partstr, PART_NAME_LEN + 1);
-#ifdef CONFIG_PARTITION_TYPE_GUID
- strcat(partitions_list, ",type=");
- strncat(partitions_list, curr->gpt_part_info.type_guid,
- UUID_STR_LEN + 1);
-#endif
+ if (IS_ENABLED(CONFIG_PARTITION_TYPE_GUID)) {
+ strcat(partitions_list, ",type=");
+ strncat(partitions_list,
+ disk_partition_type_guid(&curr->gpt_part_info),
+ UUID_STR_LEN + 1);
+ }
if (CONFIG_IS_ENABLED(PARTITION_UUIDS)) {
strcat(partitions_list, ",uuid=");
strncat(partitions_list,