]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
cmd: gpt: fix gpt read
authorHeinrich Schuchardt <heinrich.schuchardt@canonical.com>
Sat, 2 Sep 2023 07:35:24 +0000 (09:35 +0200)
committerTom Rini <trini@konsulko.com>
Mon, 11 Sep 2023 20:34:19 +0000 (16:34 -0400)
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>
cmd/gpt.c

index c404785c1d1861c6f762eb42e0f0654ed77e28bc..d7e96529a6931a8e79b4dfcb21fc2630d151241f 100644 (file)
--- 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,