- gpt: Revert to filesystem GUID when setting flag to off (bcl)
- tests: Add a test to make sure GPT GUIDs default to filesystem (bcl) - doc: Document gpt linux-home flag (bcl) - gpt: Add linux-home flag (aschnell) - gpt: Map PED_PARTITON_ flags to GUID values (aschnell)
This commit is contained in:
parent
27d77ddc17
commit
fb6ff33ba9
566
0039-gpt-Map-PED_PARTITON_-flags-to-GUID-values.patch
Normal file
566
0039-gpt-Map-PED_PARTITON_-flags-to-GUID-values.patch
Normal file
@ -0,0 +1,566 @@
|
|||||||
|
From 15c49ec04f7eaff014d2e1eddd0aecf4150db63d Mon Sep 17 00:00:00 2001
|
||||||
|
From: Arvin Schnell <aschnell@suse.com>
|
||||||
|
Date: Mon, 27 Sep 2021 08:35:31 +0000
|
||||||
|
Subject: [PATCH 39/43] gpt: Map PED_PARTITON_ flags to GUID values
|
||||||
|
|
||||||
|
Drop the 14 flags from _GPTPartitionData that correspond to a
|
||||||
|
partition type/uuid. Use the type/uuid directly instead.
|
||||||
|
|
||||||
|
Signed-off-by: Brian C. Lane <bcl@redhat.com>
|
||||||
|
---
|
||||||
|
libparted/labels/gpt.c | 477 +++++------------------------------------
|
||||||
|
1 file changed, 54 insertions(+), 423 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/libparted/labels/gpt.c b/libparted/labels/gpt.c
|
||||||
|
index ba9a71a..3ba3cee 100644
|
||||||
|
--- a/libparted/labels/gpt.c
|
||||||
|
+++ b/libparted/labels/gpt.c
|
||||||
|
@@ -165,6 +165,43 @@ typedef struct
|
||||||
|
PED_CPU_TO_LE16 (0x4262), 0xa3, 0x52, \
|
||||||
|
{ 0xb2, 0x75, 0xfd, 0x6f, 0x71, 0x72 }})
|
||||||
|
|
||||||
|
+struct flag_uuid_mapping_t
|
||||||
|
+{
|
||||||
|
+ enum _PedPartitionFlag flag;
|
||||||
|
+ efi_guid_t type_uuid;
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+static const struct flag_uuid_mapping_t flag_uuid_mapping[] =
|
||||||
|
+{
|
||||||
|
+ { PED_PARTITION_APPLE_TV_RECOVERY, PARTITION_APPLE_TV_RECOVERY_GUID },
|
||||||
|
+ { PED_PARTITION_BIOS_GRUB, PARTITION_BIOS_GRUB_GUID },
|
||||||
|
+ { PED_PARTITION_BLS_BOOT, PARTITION_BLS_BOOT_GUID },
|
||||||
|
+ { PED_PARTITION_BOOT, PARTITION_SYSTEM_GUID },
|
||||||
|
+ { PED_PARTITION_CHROMEOS_KERNEL, PARTITION_CHROMEOS_KERNEL_GUID },
|
||||||
|
+ { PED_PARTITION_DIAG, PARTITION_MSFT_RECOVERY },
|
||||||
|
+ { PED_PARTITION_ESP, PARTITION_SYSTEM_GUID },
|
||||||
|
+ { PED_PARTITION_HPSERVICE, PARTITION_HPSERVICE_GUID },
|
||||||
|
+ { PED_PARTITION_IRST, PARTITION_IRST_GUID },
|
||||||
|
+ { PED_PARTITION_LVM, PARTITION_LVM_GUID },
|
||||||
|
+ { PED_PARTITION_MSFT_DATA, PARTITION_BASIC_DATA_GUID },
|
||||||
|
+ { PED_PARTITION_MSFT_RESERVED, PARTITION_MSFT_RESERVED_GUID },
|
||||||
|
+ { PED_PARTITION_PREP, PARTITION_PREP_GUID },
|
||||||
|
+ { PED_PARTITION_RAID, PARTITION_RAID_GUID },
|
||||||
|
+ { PED_PARTITION_SWAP, PARTITION_SWAP_GUID },
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+static const struct flag_uuid_mapping_t* _GL_ATTRIBUTE_CONST
|
||||||
|
+gpt_find_flag_uuid_mapping (PedPartitionFlag flag)
|
||||||
|
+{
|
||||||
|
+ int n = sizeof(flag_uuid_mapping) / sizeof(flag_uuid_mapping[0]);
|
||||||
|
+
|
||||||
|
+ for (int i = 0; i < n; ++i)
|
||||||
|
+ if (flag_uuid_mapping[i].flag == flag)
|
||||||
|
+ return &flag_uuid_mapping[i];
|
||||||
|
+
|
||||||
|
+ return NULL;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
struct __attribute__ ((packed)) _GuidPartitionTableHeader_t
|
||||||
|
{
|
||||||
|
uint64_t Signature;
|
||||||
|
@@ -298,20 +335,6 @@ typedef struct _GPTPartitionData
|
||||||
|
efi_char16_t name[37];
|
||||||
|
char *translated_name;
|
||||||
|
GuidPartitionEntryAttributes_t attributes;
|
||||||
|
- int lvm;
|
||||||
|
- int swap;
|
||||||
|
- int raid;
|
||||||
|
- int boot;
|
||||||
|
- int bios_grub;
|
||||||
|
- int hp_service;
|
||||||
|
- int msftres;
|
||||||
|
- int msftdata;
|
||||||
|
- int atvrecv;
|
||||||
|
- int msftrecv;
|
||||||
|
- int prep;
|
||||||
|
- int irst;
|
||||||
|
- int chromeos_kernel;
|
||||||
|
- int bls_boot;
|
||||||
|
} GPTPartitionData;
|
||||||
|
|
||||||
|
static PedDiskType gpt_disk_type;
|
||||||
|
@@ -827,47 +850,6 @@ _parse_part_entry (PedDisk *disk, GuidPartitionEntry_t *pte)
|
||||||
|
gpt_part_data->translated_name = 0;
|
||||||
|
gpt_part_data->attributes = pte->Attributes;
|
||||||
|
|
||||||
|
- gpt_part_data->lvm = gpt_part_data->swap
|
||||||
|
- = gpt_part_data->raid
|
||||||
|
- = gpt_part_data->boot = gpt_part_data->hp_service
|
||||||
|
- = gpt_part_data->msftres
|
||||||
|
- = gpt_part_data->msftdata
|
||||||
|
- = gpt_part_data->msftrecv
|
||||||
|
- = gpt_part_data->prep
|
||||||
|
- = gpt_part_data->irst
|
||||||
|
- = gpt_part_data->chromeos_kernel
|
||||||
|
- = gpt_part_data->bls_boot
|
||||||
|
- = gpt_part_data->bios_grub = gpt_part_data->atvrecv = 0;
|
||||||
|
-
|
||||||
|
- if (!guid_cmp (gpt_part_data->type, PARTITION_SYSTEM_GUID))
|
||||||
|
- gpt_part_data->boot = 1;
|
||||||
|
- else if (!guid_cmp (gpt_part_data->type, PARTITION_BIOS_GRUB_GUID))
|
||||||
|
- gpt_part_data->bios_grub = 1;
|
||||||
|
- else if (!guid_cmp (gpt_part_data->type, PARTITION_RAID_GUID))
|
||||||
|
- gpt_part_data->raid = 1;
|
||||||
|
- else if (!guid_cmp (gpt_part_data->type, PARTITION_LVM_GUID))
|
||||||
|
- gpt_part_data->lvm = 1;
|
||||||
|
- else if (!guid_cmp (gpt_part_data->type, PARTITION_SWAP_GUID))
|
||||||
|
- gpt_part_data->swap = 1;
|
||||||
|
- else if (!guid_cmp (gpt_part_data->type, PARTITION_HPSERVICE_GUID))
|
||||||
|
- gpt_part_data->hp_service = 1;
|
||||||
|
- else if (!guid_cmp (gpt_part_data->type, PARTITION_MSFT_RESERVED_GUID))
|
||||||
|
- gpt_part_data->msftres = 1;
|
||||||
|
- else if (!guid_cmp (gpt_part_data->type, PARTITION_BASIC_DATA_GUID))
|
||||||
|
- gpt_part_data->msftdata = 1;
|
||||||
|
- else if (!guid_cmp (gpt_part_data->type, PARTITION_MSFT_RECOVERY))
|
||||||
|
- gpt_part_data->msftrecv = 1;
|
||||||
|
- else if (!guid_cmp (gpt_part_data->type, PARTITION_APPLE_TV_RECOVERY_GUID))
|
||||||
|
- gpt_part_data->atvrecv = 1;
|
||||||
|
- else if (!guid_cmp (gpt_part_data->type, PARTITION_PREP_GUID))
|
||||||
|
- gpt_part_data->prep = 1;
|
||||||
|
- else if (!guid_cmp (gpt_part_data->type, PARTITION_IRST_GUID))
|
||||||
|
- gpt_part_data->irst = 1;
|
||||||
|
- else if (!guid_cmp (gpt_part_data->type, PARTITION_CHROMEOS_KERNEL_GUID))
|
||||||
|
- gpt_part_data->chromeos_kernel = 1;
|
||||||
|
- else if (!guid_cmp (gpt_part_data->type, PARTITION_BLS_BOOT_GUID))
|
||||||
|
- gpt_part_data->bls_boot = 1;
|
||||||
|
-
|
||||||
|
return part;
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -1371,21 +1353,7 @@ gpt_partition_new (const PedDisk *disk,
|
||||||
|
goto error_free_part;
|
||||||
|
|
||||||
|
gpt_part_data->type = PARTITION_LINUX_DATA_GUID;
|
||||||
|
- gpt_part_data->lvm = 0;
|
||||||
|
- gpt_part_data->swap = 0;
|
||||||
|
- gpt_part_data->raid = 0;
|
||||||
|
- gpt_part_data->boot = 0;
|
||||||
|
- gpt_part_data->bios_grub = 0;
|
||||||
|
- gpt_part_data->hp_service = 0;
|
||||||
|
- gpt_part_data->msftres = 0;
|
||||||
|
- gpt_part_data->msftdata = 0;
|
||||||
|
- gpt_part_data->msftrecv = 0;
|
||||||
|
- gpt_part_data->atvrecv = 0;
|
||||||
|
- gpt_part_data->prep = 0;
|
||||||
|
gpt_part_data->translated_name = 0;
|
||||||
|
- gpt_part_data->irst = 0;
|
||||||
|
- gpt_part_data->chromeos_kernel = 0;
|
||||||
|
- gpt_part_data->bls_boot = 0;
|
||||||
|
uuid_generate ((unsigned char *) &gpt_part_data->uuid);
|
||||||
|
swap_uuid_and_efi_guid (&gpt_part_data->uuid);
|
||||||
|
memset (gpt_part_data->name, 0, sizeof gpt_part_data->name);
|
||||||
|
@@ -1457,77 +1425,6 @@ gpt_partition_set_system (PedPartition *part,
|
||||||
|
|
||||||
|
part->fs_type = fs_type;
|
||||||
|
|
||||||
|
- if (gpt_part_data->lvm)
|
||||||
|
- {
|
||||||
|
- gpt_part_data->type = PARTITION_LVM_GUID;
|
||||||
|
- return 1;
|
||||||
|
- }
|
||||||
|
- if (gpt_part_data->swap)
|
||||||
|
- {
|
||||||
|
- gpt_part_data->type = PARTITION_SWAP_GUID;
|
||||||
|
- return 1;
|
||||||
|
- }
|
||||||
|
- if (gpt_part_data->raid)
|
||||||
|
- {
|
||||||
|
- gpt_part_data->type = PARTITION_RAID_GUID;
|
||||||
|
- return 1;
|
||||||
|
- }
|
||||||
|
- if (gpt_part_data->prep)
|
||||||
|
- {
|
||||||
|
- gpt_part_data->type = PARTITION_PREP_GUID;
|
||||||
|
- return 1;
|
||||||
|
- }
|
||||||
|
- if (gpt_part_data->boot)
|
||||||
|
- {
|
||||||
|
- gpt_part_data->type = PARTITION_SYSTEM_GUID;
|
||||||
|
- return 1;
|
||||||
|
- }
|
||||||
|
- if (gpt_part_data->bios_grub)
|
||||||
|
- {
|
||||||
|
- gpt_part_data->type = PARTITION_BIOS_GRUB_GUID;
|
||||||
|
- return 1;
|
||||||
|
- }
|
||||||
|
- if (gpt_part_data->hp_service)
|
||||||
|
- {
|
||||||
|
- gpt_part_data->type = PARTITION_HPSERVICE_GUID;
|
||||||
|
- return 1;
|
||||||
|
- }
|
||||||
|
- if (gpt_part_data->msftres)
|
||||||
|
- {
|
||||||
|
- gpt_part_data->type = PARTITION_MSFT_RESERVED_GUID;
|
||||||
|
- return 1;
|
||||||
|
- }
|
||||||
|
- if (gpt_part_data->msftdata)
|
||||||
|
- {
|
||||||
|
- gpt_part_data->type = PARTITION_BASIC_DATA_GUID;
|
||||||
|
- return 1;
|
||||||
|
- }
|
||||||
|
- if (gpt_part_data->msftrecv)
|
||||||
|
- {
|
||||||
|
- gpt_part_data->type = PARTITION_MSFT_RECOVERY;
|
||||||
|
- return 1;
|
||||||
|
- }
|
||||||
|
- if (gpt_part_data->atvrecv)
|
||||||
|
- {
|
||||||
|
- gpt_part_data->type = PARTITION_APPLE_TV_RECOVERY_GUID;
|
||||||
|
- return 1;
|
||||||
|
- }
|
||||||
|
- if (gpt_part_data->irst)
|
||||||
|
- {
|
||||||
|
- gpt_part_data->type = PARTITION_IRST_GUID;
|
||||||
|
- return 1;
|
||||||
|
- }
|
||||||
|
- if (gpt_part_data->chromeos_kernel)
|
||||||
|
- {
|
||||||
|
- gpt_part_data->type = PARTITION_CHROMEOS_KERNEL_GUID;
|
||||||
|
- return 1;
|
||||||
|
- }
|
||||||
|
- if (gpt_part_data->bls_boot)
|
||||||
|
- {
|
||||||
|
- gpt_part_data->type = PARTITION_BLS_BOOT_GUID;
|
||||||
|
- return 1;
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
if (fs_type)
|
||||||
|
{
|
||||||
|
if (strncmp (fs_type->name, "fat", 3) == 0
|
||||||
|
@@ -1657,247 +1554,18 @@ gpt_partition_set_flag (PedPartition *part, PedPartitionFlag flag, int state)
|
||||||
|
PED_ASSERT (part->disk_specific != NULL);
|
||||||
|
gpt_part_data = part->disk_specific;
|
||||||
|
|
||||||
|
+ const struct flag_uuid_mapping_t* p = gpt_find_flag_uuid_mapping (flag);
|
||||||
|
+ if (p)
|
||||||
|
+ {
|
||||||
|
+ if (state)
|
||||||
|
+ gpt_part_data->type = p->type_uuid;
|
||||||
|
+ else if (guid_cmp (gpt_part_data->type, p->type_uuid) == 0)
|
||||||
|
+ gpt_part_data->type = PARTITION_LINUX_DATA_GUID;
|
||||||
|
+ return 1;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
switch (flag)
|
||||||
|
{
|
||||||
|
- case PED_PARTITION_ESP:
|
||||||
|
- case PED_PARTITION_BOOT:
|
||||||
|
- gpt_part_data->boot = state;
|
||||||
|
- if (state)
|
||||||
|
- gpt_part_data->raid
|
||||||
|
- = gpt_part_data->lvm
|
||||||
|
- = gpt_part_data->swap
|
||||||
|
- = gpt_part_data->bios_grub
|
||||||
|
- = gpt_part_data->hp_service
|
||||||
|
- = gpt_part_data->msftres
|
||||||
|
- = gpt_part_data->msftdata
|
||||||
|
- = gpt_part_data->msftrecv
|
||||||
|
- = gpt_part_data->prep
|
||||||
|
- = gpt_part_data->irst
|
||||||
|
- = gpt_part_data->chromeos_kernel
|
||||||
|
- = gpt_part_data->bls_boot
|
||||||
|
- = gpt_part_data->atvrecv = 0;
|
||||||
|
- return gpt_partition_set_system (part, part->fs_type);
|
||||||
|
- case PED_PARTITION_BIOS_GRUB:
|
||||||
|
- gpt_part_data->bios_grub = state;
|
||||||
|
- if (state)
|
||||||
|
- gpt_part_data->raid
|
||||||
|
- = gpt_part_data->lvm
|
||||||
|
- = gpt_part_data->swap
|
||||||
|
- = gpt_part_data->boot
|
||||||
|
- = gpt_part_data->hp_service
|
||||||
|
- = gpt_part_data->msftres
|
||||||
|
- = gpt_part_data->msftdata
|
||||||
|
- = gpt_part_data->msftrecv
|
||||||
|
- = gpt_part_data->prep
|
||||||
|
- = gpt_part_data->irst
|
||||||
|
- = gpt_part_data->chromeos_kernel
|
||||||
|
- = gpt_part_data->bls_boot
|
||||||
|
- = gpt_part_data->atvrecv = 0;
|
||||||
|
- return gpt_partition_set_system (part, part->fs_type);
|
||||||
|
- case PED_PARTITION_RAID:
|
||||||
|
- gpt_part_data->raid = state;
|
||||||
|
- if (state)
|
||||||
|
- gpt_part_data->boot
|
||||||
|
- = gpt_part_data->lvm
|
||||||
|
- = gpt_part_data->swap
|
||||||
|
- = gpt_part_data->bios_grub
|
||||||
|
- = gpt_part_data->hp_service
|
||||||
|
- = gpt_part_data->msftres
|
||||||
|
- = gpt_part_data->msftdata
|
||||||
|
- = gpt_part_data->msftrecv
|
||||||
|
- = gpt_part_data->prep
|
||||||
|
- = gpt_part_data->irst
|
||||||
|
- = gpt_part_data->chromeos_kernel
|
||||||
|
- = gpt_part_data->bls_boot
|
||||||
|
- = gpt_part_data->atvrecv = 0;
|
||||||
|
- return gpt_partition_set_system (part, part->fs_type);
|
||||||
|
- case PED_PARTITION_LVM:
|
||||||
|
- gpt_part_data->lvm = state;
|
||||||
|
- if (state)
|
||||||
|
- gpt_part_data->boot
|
||||||
|
- = gpt_part_data->swap
|
||||||
|
- = gpt_part_data->raid
|
||||||
|
- = gpt_part_data->bios_grub
|
||||||
|
- = gpt_part_data->hp_service
|
||||||
|
- = gpt_part_data->msftres
|
||||||
|
- = gpt_part_data->msftdata
|
||||||
|
- = gpt_part_data->msftrecv
|
||||||
|
- = gpt_part_data->prep
|
||||||
|
- = gpt_part_data->irst
|
||||||
|
- = gpt_part_data->chromeos_kernel
|
||||||
|
- = gpt_part_data->bls_boot
|
||||||
|
- = gpt_part_data->atvrecv = 0;
|
||||||
|
- return gpt_partition_set_system (part, part->fs_type);
|
||||||
|
- case PED_PARTITION_SWAP:
|
||||||
|
- gpt_part_data->swap = state;
|
||||||
|
- if (state)
|
||||||
|
- gpt_part_data->boot
|
||||||
|
- = gpt_part_data->lvm
|
||||||
|
- = gpt_part_data->raid
|
||||||
|
- = gpt_part_data->bios_grub
|
||||||
|
- = gpt_part_data->hp_service
|
||||||
|
- = gpt_part_data->msftres
|
||||||
|
- = gpt_part_data->msftdata
|
||||||
|
- = gpt_part_data->msftrecv
|
||||||
|
- = gpt_part_data->prep
|
||||||
|
- = gpt_part_data->irst
|
||||||
|
- = gpt_part_data->chromeos_kernel
|
||||||
|
- = gpt_part_data->bls_boot
|
||||||
|
- = gpt_part_data->atvrecv = 0;
|
||||||
|
- return gpt_partition_set_system (part, part->fs_type);
|
||||||
|
- case PED_PARTITION_HPSERVICE:
|
||||||
|
- gpt_part_data->hp_service = state;
|
||||||
|
- if (state)
|
||||||
|
- gpt_part_data->boot
|
||||||
|
- = gpt_part_data->raid
|
||||||
|
- = gpt_part_data->lvm
|
||||||
|
- = gpt_part_data->swap
|
||||||
|
- = gpt_part_data->bios_grub
|
||||||
|
- = gpt_part_data->msftres
|
||||||
|
- = gpt_part_data->msftdata
|
||||||
|
- = gpt_part_data->msftrecv
|
||||||
|
- = gpt_part_data->prep
|
||||||
|
- = gpt_part_data->irst
|
||||||
|
- = gpt_part_data->chromeos_kernel
|
||||||
|
- = gpt_part_data->bls_boot
|
||||||
|
- = gpt_part_data->atvrecv = 0;
|
||||||
|
- return gpt_partition_set_system (part, part->fs_type);
|
||||||
|
- case PED_PARTITION_MSFT_RESERVED:
|
||||||
|
- gpt_part_data->msftres = state;
|
||||||
|
- if (state)
|
||||||
|
- gpt_part_data->boot
|
||||||
|
- = gpt_part_data->raid
|
||||||
|
- = gpt_part_data->lvm
|
||||||
|
- = gpt_part_data->swap
|
||||||
|
- = gpt_part_data->bios_grub
|
||||||
|
- = gpt_part_data->hp_service
|
||||||
|
- = gpt_part_data->msftdata
|
||||||
|
- = gpt_part_data->msftrecv
|
||||||
|
- = gpt_part_data->prep
|
||||||
|
- = gpt_part_data->irst
|
||||||
|
- = gpt_part_data->chromeos_kernel
|
||||||
|
- = gpt_part_data->bls_boot
|
||||||
|
- = gpt_part_data->atvrecv = 0;
|
||||||
|
- return gpt_partition_set_system (part, part->fs_type);
|
||||||
|
- case PED_PARTITION_MSFT_DATA:
|
||||||
|
- gpt_part_data->msftres = state;
|
||||||
|
- if (state) {
|
||||||
|
- gpt_part_data->boot
|
||||||
|
- = gpt_part_data->raid
|
||||||
|
- = gpt_part_data->lvm
|
||||||
|
- = gpt_part_data->swap
|
||||||
|
- = gpt_part_data->bios_grub
|
||||||
|
- = gpt_part_data->hp_service
|
||||||
|
- = gpt_part_data->msftres
|
||||||
|
- = gpt_part_data->msftrecv
|
||||||
|
- = gpt_part_data->prep
|
||||||
|
- = gpt_part_data->irst
|
||||||
|
- = gpt_part_data->chromeos_kernel
|
||||||
|
- = gpt_part_data->bls_boot
|
||||||
|
- = gpt_part_data->atvrecv = 0;
|
||||||
|
- gpt_part_data->msftdata = 1;
|
||||||
|
- } else {
|
||||||
|
- gpt_part_data->msftdata = 0;
|
||||||
|
- }
|
||||||
|
- return gpt_partition_set_system (part, part->fs_type);
|
||||||
|
- case PED_PARTITION_DIAG:
|
||||||
|
- gpt_part_data->msftrecv = state;
|
||||||
|
- if (state)
|
||||||
|
- gpt_part_data->boot
|
||||||
|
- = gpt_part_data->raid
|
||||||
|
- = gpt_part_data->lvm
|
||||||
|
- = gpt_part_data->swap
|
||||||
|
- = gpt_part_data->bios_grub
|
||||||
|
- = gpt_part_data->hp_service
|
||||||
|
- = gpt_part_data->msftdata
|
||||||
|
- = gpt_part_data->msftres
|
||||||
|
- = gpt_part_data->prep
|
||||||
|
- = gpt_part_data->irst
|
||||||
|
- = gpt_part_data->chromeos_kernel
|
||||||
|
- = gpt_part_data->atvrecv = 0;
|
||||||
|
- return gpt_partition_set_system (part, part->fs_type);
|
||||||
|
- case PED_PARTITION_APPLE_TV_RECOVERY:
|
||||||
|
- gpt_part_data->atvrecv = state;
|
||||||
|
- if (state)
|
||||||
|
- gpt_part_data->boot
|
||||||
|
- = gpt_part_data->raid
|
||||||
|
- = gpt_part_data->lvm
|
||||||
|
- = gpt_part_data->swap
|
||||||
|
- = gpt_part_data->bios_grub
|
||||||
|
- = gpt_part_data->hp_service
|
||||||
|
- = gpt_part_data->msftres
|
||||||
|
- = gpt_part_data->msftdata
|
||||||
|
- = gpt_part_data->prep
|
||||||
|
- = gpt_part_data->chromeos_kernel
|
||||||
|
- = gpt_part_data->msftrecv = 0;
|
||||||
|
- return gpt_partition_set_system (part, part->fs_type);
|
||||||
|
- case PED_PARTITION_PREP:
|
||||||
|
- gpt_part_data->prep = state;
|
||||||
|
- if (state)
|
||||||
|
- gpt_part_data->boot
|
||||||
|
- = gpt_part_data->raid
|
||||||
|
- = gpt_part_data->lvm
|
||||||
|
- = gpt_part_data->swap
|
||||||
|
- = gpt_part_data->bios_grub
|
||||||
|
- = gpt_part_data->hp_service
|
||||||
|
- = gpt_part_data->msftres
|
||||||
|
- = gpt_part_data->irst
|
||||||
|
- = gpt_part_data->atvrecv
|
||||||
|
- = gpt_part_data->chromeos_kernel
|
||||||
|
- = gpt_part_data->bls_boot
|
||||||
|
- = gpt_part_data->msftrecv = 0;
|
||||||
|
- return gpt_partition_set_system (part, part->fs_type);
|
||||||
|
- case PED_PARTITION_IRST:
|
||||||
|
- gpt_part_data->irst = state;
|
||||||
|
- if (state)
|
||||||
|
- gpt_part_data->boot
|
||||||
|
- = gpt_part_data->raid
|
||||||
|
- = gpt_part_data->lvm
|
||||||
|
- = gpt_part_data->swap
|
||||||
|
- = gpt_part_data->bios_grub
|
||||||
|
- = gpt_part_data->hp_service
|
||||||
|
- = gpt_part_data->msftres
|
||||||
|
- = gpt_part_data->msftdata
|
||||||
|
- = gpt_part_data->msftrecv
|
||||||
|
- = gpt_part_data->prep
|
||||||
|
- = gpt_part_data->chromeos_kernel
|
||||||
|
- = gpt_part_data->bls_boot
|
||||||
|
- = gpt_part_data->atvrecv = 0;
|
||||||
|
- return gpt_partition_set_system (part, part->fs_type);
|
||||||
|
- case PED_PARTITION_CHROMEOS_KERNEL:
|
||||||
|
- gpt_part_data->chromeos_kernel = state;
|
||||||
|
- if (state)
|
||||||
|
- gpt_part_data->boot
|
||||||
|
- = gpt_part_data->bios_grub
|
||||||
|
- = gpt_part_data->raid
|
||||||
|
- = gpt_part_data->lvm
|
||||||
|
- = gpt_part_data->swap
|
||||||
|
- = gpt_part_data->hp_service
|
||||||
|
- = gpt_part_data->msftres
|
||||||
|
- = gpt_part_data->msftdata
|
||||||
|
- = gpt_part_data->msftrecv
|
||||||
|
- = gpt_part_data->atvrecv
|
||||||
|
- = gpt_part_data->prep
|
||||||
|
- = gpt_part_data->irst
|
||||||
|
- = gpt_part_data->bls_boot = 0;
|
||||||
|
- return gpt_partition_set_system (part, part->fs_type);
|
||||||
|
- case PED_PARTITION_BLS_BOOT:
|
||||||
|
- gpt_part_data->bls_boot = state;
|
||||||
|
- if (state)
|
||||||
|
- gpt_part_data->boot
|
||||||
|
- = gpt_part_data->raid
|
||||||
|
- = gpt_part_data->lvm
|
||||||
|
- = gpt_part_data->swap
|
||||||
|
- = gpt_part_data->bios_grub
|
||||||
|
- = gpt_part_data->hp_service
|
||||||
|
- = gpt_part_data->msftres
|
||||||
|
- = gpt_part_data->msftdata
|
||||||
|
- = gpt_part_data->msftrecv
|
||||||
|
- = gpt_part_data->prep
|
||||||
|
- = gpt_part_data->irst
|
||||||
|
- = gpt_part_data->chromeos_kernel
|
||||||
|
- = gpt_part_data->atvrecv = 0;
|
||||||
|
- return gpt_partition_set_system (part, part->fs_type);
|
||||||
|
case PED_PARTITION_HIDDEN:
|
||||||
|
gpt_part_data->attributes.RequiredToFunction = state;
|
||||||
|
return 1;
|
||||||
|
@@ -1919,41 +1587,16 @@ gpt_partition_get_flag (const PedPartition *part, PedPartitionFlag flag)
|
||||||
|
PED_ASSERT (part->disk_specific != NULL);
|
||||||
|
gpt_part_data = part->disk_specific;
|
||||||
|
|
||||||
|
+ const struct flag_uuid_mapping_t* p = gpt_find_flag_uuid_mapping (flag);
|
||||||
|
+ if (p)
|
||||||
|
+ return guid_cmp (gpt_part_data->type, p->type_uuid) == 0;
|
||||||
|
+
|
||||||
|
switch (flag)
|
||||||
|
{
|
||||||
|
- case PED_PARTITION_RAID:
|
||||||
|
- return gpt_part_data->raid;
|
||||||
|
- case PED_PARTITION_LVM:
|
||||||
|
- return gpt_part_data->lvm;
|
||||||
|
- case PED_PARTITION_ESP:
|
||||||
|
- case PED_PARTITION_BOOT:
|
||||||
|
- return gpt_part_data->boot;
|
||||||
|
- case PED_PARTITION_BIOS_GRUB:
|
||||||
|
- return gpt_part_data->bios_grub;
|
||||||
|
- case PED_PARTITION_HPSERVICE:
|
||||||
|
- return gpt_part_data->hp_service;
|
||||||
|
- case PED_PARTITION_MSFT_RESERVED:
|
||||||
|
- return gpt_part_data->msftres;
|
||||||
|
- case PED_PARTITION_MSFT_DATA:
|
||||||
|
- return gpt_part_data->msftdata;
|
||||||
|
- case PED_PARTITION_DIAG:
|
||||||
|
- return gpt_part_data->msftrecv;
|
||||||
|
- case PED_PARTITION_APPLE_TV_RECOVERY:
|
||||||
|
- return gpt_part_data->atvrecv;
|
||||||
|
case PED_PARTITION_HIDDEN:
|
||||||
|
return gpt_part_data->attributes.RequiredToFunction;
|
||||||
|
case PED_PARTITION_LEGACY_BOOT:
|
||||||
|
return gpt_part_data->attributes.LegacyBIOSBootable;
|
||||||
|
- case PED_PARTITION_PREP:
|
||||||
|
- return gpt_part_data->prep;
|
||||||
|
- case PED_PARTITION_IRST:
|
||||||
|
- return gpt_part_data->irst;
|
||||||
|
- case PED_PARTITION_BLS_BOOT:
|
||||||
|
- return gpt_part_data->bls_boot;
|
||||||
|
- case PED_PARTITION_SWAP:
|
||||||
|
- return gpt_part_data->swap;
|
||||||
|
- case PED_PARTITION_CHROMEOS_KERNEL:
|
||||||
|
- return gpt_part_data->chromeos_kernel;
|
||||||
|
case PED_PARTITION_LBA:
|
||||||
|
case PED_PARTITION_ROOT:
|
||||||
|
default:
|
||||||
|
@@ -1966,25 +1609,13 @@ static int
|
||||||
|
gpt_partition_is_flag_available (const PedPartition *part,
|
||||||
|
PedPartitionFlag flag)
|
||||||
|
{
|
||||||
|
+ if (gpt_find_flag_uuid_mapping (flag))
|
||||||
|
+ return 1;
|
||||||
|
+
|
||||||
|
switch (flag)
|
||||||
|
{
|
||||||
|
- case PED_PARTITION_RAID:
|
||||||
|
- case PED_PARTITION_LVM:
|
||||||
|
- case PED_PARTITION_SWAP:
|
||||||
|
- case PED_PARTITION_BOOT:
|
||||||
|
- case PED_PARTITION_BIOS_GRUB:
|
||||||
|
- case PED_PARTITION_HPSERVICE:
|
||||||
|
- case PED_PARTITION_MSFT_RESERVED:
|
||||||
|
- case PED_PARTITION_MSFT_DATA:
|
||||||
|
- case PED_PARTITION_DIAG:
|
||||||
|
- case PED_PARTITION_APPLE_TV_RECOVERY:
|
||||||
|
case PED_PARTITION_HIDDEN:
|
||||||
|
case PED_PARTITION_LEGACY_BOOT:
|
||||||
|
- case PED_PARTITION_PREP:
|
||||||
|
- case PED_PARTITION_IRST:
|
||||||
|
- case PED_PARTITION_ESP:
|
||||||
|
- case PED_PARTITION_CHROMEOS_KERNEL:
|
||||||
|
- case PED_PARTITION_BLS_BOOT:
|
||||||
|
return 1;
|
||||||
|
case PED_PARTITION_ROOT:
|
||||||
|
case PED_PARTITION_LBA:
|
||||||
|
--
|
||||||
|
2.31.1
|
||||||
|
|
72
0040-gpt-Add-linux-home-flag.patch
Normal file
72
0040-gpt-Add-linux-home-flag.patch
Normal file
@ -0,0 +1,72 @@
|
|||||||
|
From 6ef2f88d014f267157d9e9300b31c5f1ab4d5e42 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Arvin Schnell <aschnell@suse.com>
|
||||||
|
Date: Thu, 30 Sep 2021 13:49:30 -0700
|
||||||
|
Subject: [PATCH 40/43] gpt: Add linux-home flag
|
||||||
|
|
||||||
|
This sets the partition GUID to the linux home type:
|
||||||
|
933AC7E1-2EB4-4F13-B844-0E14E2AEF915
|
||||||
|
|
||||||
|
Signed-off-by: Brian C. Lane <bcl@redhat.com>
|
||||||
|
---
|
||||||
|
include/parted/disk.in.h | 5 +++--
|
||||||
|
libparted/disk.c | 2 ++
|
||||||
|
libparted/labels/gpt.c | 5 +++++
|
||||||
|
3 files changed, 10 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/include/parted/disk.in.h b/include/parted/disk.in.h
|
||||||
|
index 7ca6453..303f59c 100644
|
||||||
|
--- a/include/parted/disk.in.h
|
||||||
|
+++ b/include/parted/disk.in.h
|
||||||
|
@@ -84,10 +84,11 @@ enum _PedPartitionFlag {
|
||||||
|
PED_PARTITION_IRST=17,
|
||||||
|
PED_PARTITION_ESP=18,
|
||||||
|
PED_PARTITION_CHROMEOS_KERNEL=19,
|
||||||
|
- PED_PARTITION_BLS_BOOT=20
|
||||||
|
+ PED_PARTITION_BLS_BOOT=20,
|
||||||
|
+ PED_PARTITION_LINUX_HOME=21,
|
||||||
|
};
|
||||||
|
#define PED_PARTITION_FIRST_FLAG PED_PARTITION_BOOT
|
||||||
|
-#define PED_PARTITION_LAST_FLAG PED_PARTITION_BLS_BOOT
|
||||||
|
+#define PED_PARTITION_LAST_FLAG PED_PARTITION_LINUX_HOME
|
||||||
|
|
||||||
|
enum _PedDiskTypeFeature {
|
||||||
|
PED_DISK_TYPE_EXTENDED=1, /**< supports extended partitions */
|
||||||
|
diff --git a/libparted/disk.c b/libparted/disk.c
|
||||||
|
index 345b9e7..8496fc0 100644
|
||||||
|
--- a/libparted/disk.c
|
||||||
|
+++ b/libparted/disk.c
|
||||||
|
@@ -2411,6 +2411,8 @@ ped_partition_flag_get_name (PedPartitionFlag flag)
|
||||||
|
return N_("chromeos_kernel");
|
||||||
|
case PED_PARTITION_BLS_BOOT:
|
||||||
|
return N_("bls_boot");
|
||||||
|
+ case PED_PARTITION_LINUX_HOME:
|
||||||
|
+ return N_("linux-home");
|
||||||
|
|
||||||
|
default:
|
||||||
|
ped_exception_throw (
|
||||||
|
diff --git a/libparted/labels/gpt.c b/libparted/labels/gpt.c
|
||||||
|
index 3ba3cee..8b345d5 100644
|
||||||
|
--- a/libparted/labels/gpt.c
|
||||||
|
+++ b/libparted/labels/gpt.c
|
||||||
|
@@ -164,6 +164,10 @@ typedef struct
|
||||||
|
((efi_guid_t) { PED_CPU_TO_LE32 (0xbc13c2ff), PED_CPU_TO_LE16 (0x59e6), \
|
||||||
|
PED_CPU_TO_LE16 (0x4262), 0xa3, 0x52, \
|
||||||
|
{ 0xb2, 0x75, 0xfd, 0x6f, 0x71, 0x72 }})
|
||||||
|
+#define PARTITION_LINUX_HOME_GUID \
|
||||||
|
+ ((efi_guid_t) { PED_CPU_TO_LE32 (0x933ac7e1), PED_CPU_TO_LE16 (0x2eb4), \
|
||||||
|
+ PED_CPU_TO_LE16 (0x4f13), 0xb8, 0x44, \
|
||||||
|
+ { 0x0e, 0x14, 0xe2, 0xae, 0xf9, 0x15 }})
|
||||||
|
|
||||||
|
struct flag_uuid_mapping_t
|
||||||
|
{
|
||||||
|
@@ -182,6 +186,7 @@ static const struct flag_uuid_mapping_t flag_uuid_mapping[] =
|
||||||
|
{ PED_PARTITION_ESP, PARTITION_SYSTEM_GUID },
|
||||||
|
{ PED_PARTITION_HPSERVICE, PARTITION_HPSERVICE_GUID },
|
||||||
|
{ PED_PARTITION_IRST, PARTITION_IRST_GUID },
|
||||||
|
+ { PED_PARTITION_LINUX_HOME, PARTITION_LINUX_HOME_GUID },
|
||||||
|
{ PED_PARTITION_LVM, PARTITION_LVM_GUID },
|
||||||
|
{ PED_PARTITION_MSFT_DATA, PARTITION_BASIC_DATA_GUID },
|
||||||
|
{ PED_PARTITION_MSFT_RESERVED, PARTITION_MSFT_RESERVED_GUID },
|
||||||
|
--
|
||||||
|
2.31.1
|
||||||
|
|
42
0041-doc-Document-gpt-linux-home-flag.patch
Normal file
42
0041-doc-Document-gpt-linux-home-flag.patch
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
From 87d78ee78ca8d09de0d4850280cfd0ea9d9662fd Mon Sep 17 00:00:00 2001
|
||||||
|
From: "Brian C. Lane" <bcl@redhat.com>
|
||||||
|
Date: Thu, 30 Sep 2021 13:46:40 -0700
|
||||||
|
Subject: [PATCH 41/43] doc: Document gpt linux-home flag
|
||||||
|
|
||||||
|
---
|
||||||
|
doc/C/parted.8 | 3 ++-
|
||||||
|
doc/parted.texi | 4 ++++
|
||||||
|
2 files changed, 6 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/doc/C/parted.8 b/doc/C/parted.8
|
||||||
|
index 46b30ad..afca9f2 100644
|
||||||
|
--- a/doc/C/parted.8
|
||||||
|
+++ b/doc/C/parted.8
|
||||||
|
@@ -118,7 +118,8 @@ or an LVM logical volume if necessary.
|
||||||
|
.B set \fIpartition\fP \fIflag\fP \fIstate\fP
|
||||||
|
Change the state of the \fIflag\fP on \fIpartition\fP to \fIstate\fP.
|
||||||
|
Supported flags are: "boot", "root", "swap", "hidden", "raid", "lvm", "lba",
|
||||||
|
-"legacy_boot", "irst", "msftres", "esp", "chromeos_kernel", "bls_boot" and "palo".
|
||||||
|
+"legacy_boot", "irst", "msftres", "esp", "chromeos_kernel", "bls_boot", "linux-home",
|
||||||
|
+and "palo".
|
||||||
|
\fIstate\fP should be either "on" or "off".
|
||||||
|
.TP
|
||||||
|
.B unit \fIunit\fP
|
||||||
|
diff --git a/doc/parted.texi b/doc/parted.texi
|
||||||
|
index 57ceb55..4344328 100644
|
||||||
|
--- a/doc/parted.texi
|
||||||
|
+++ b/doc/parted.texi
|
||||||
|
@@ -904,6 +904,10 @@ MS Windows ME based operating systems to use Linear (LBA) mode.
|
||||||
|
(Mac) - this flag should be enabled if the partition is the root device
|
||||||
|
to be used by Linux.
|
||||||
|
|
||||||
|
+@item linux-home
|
||||||
|
+(GPT) - Enable this to indicate that the selected partition is a
|
||||||
|
+Linux /home partition.
|
||||||
|
+
|
||||||
|
@item swap
|
||||||
|
(MS-DOS, GPT, Mac) - this flag should be enabled if the partition is the
|
||||||
|
swap device to be used by Linux.
|
||||||
|
--
|
||||||
|
2.31.1
|
||||||
|
|
144
0042-tests-Add-a-test-to-make-sure-GPT-GUIDs-default-to-f.patch
Normal file
144
0042-tests-Add-a-test-to-make-sure-GPT-GUIDs-default-to-f.patch
Normal file
@ -0,0 +1,144 @@
|
|||||||
|
From 10ad2aac0453f10b2e355a0df03618e0ebc593be Mon Sep 17 00:00:00 2001
|
||||||
|
From: "Brian C. Lane" <bcl@redhat.com>
|
||||||
|
Date: Wed, 29 Sep 2021 15:57:50 -0700
|
||||||
|
Subject: [PATCH 42/43] tests: Add a test to make sure GPT GUIDs default to
|
||||||
|
filesystem
|
||||||
|
|
||||||
|
When no flag is set on a GPT partition the GUID should fall back to the
|
||||||
|
filesystem type for fat32, swap, and hfs+ and if no filesystem is found
|
||||||
|
it should default to linux filesystem data type, showing no filesystem
|
||||||
|
and no flags.
|
||||||
|
---
|
||||||
|
tests/Makefile.am | 1 +
|
||||||
|
tests/t3210-gpt-type-change.sh | 107 +++++++++++++++++++++++++++++++++
|
||||||
|
2 files changed, 108 insertions(+)
|
||||||
|
create mode 100755 tests/t3210-gpt-type-change.sh
|
||||||
|
|
||||||
|
diff --git a/tests/Makefile.am b/tests/Makefile.am
|
||||||
|
index 3dc6e72..5cb7aa3 100644
|
||||||
|
--- a/tests/Makefile.am
|
||||||
|
+++ b/tests/Makefile.am
|
||||||
|
@@ -60,6 +60,7 @@ TESTS = \
|
||||||
|
t3000-resize-fs.sh \
|
||||||
|
t3200-resize-partition.sh \
|
||||||
|
t3200-type-change.sh \
|
||||||
|
+ t3210-gpt-type-change.sh \
|
||||||
|
t3300-palo-prep.sh \
|
||||||
|
t3310-flags.sh \
|
||||||
|
t3400-whole-disk-FAT-partition.sh \
|
||||||
|
diff --git a/tests/t3210-gpt-type-change.sh b/tests/t3210-gpt-type-change.sh
|
||||||
|
new file mode 100755
|
||||||
|
index 0000000..57000d9
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/tests/t3210-gpt-type-change.sh
|
||||||
|
@@ -0,0 +1,107 @@
|
||||||
|
+#!/bin/sh
|
||||||
|
+# Ensure parted changes GUID back to match its FS.
|
||||||
|
+
|
||||||
|
+# Copyright (C) 2021 Free Software Foundation, Inc.
|
||||||
|
+
|
||||||
|
+# This program is free software; you can redistribute it and/or modify
|
||||||
|
+# it under the terms of the GNU General Public License as published by
|
||||||
|
+# the Free Software Foundation; either version 3 of the License, or
|
||||||
|
+# (at your option) any later version.
|
||||||
|
+
|
||||||
|
+# This program is distributed in the hope that it will be useful,
|
||||||
|
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
+# GNU General Public License for more details.
|
||||||
|
+
|
||||||
|
+# You should have received a copy of the GNU General Public License
|
||||||
|
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
+
|
||||||
|
+. "${srcdir=.}/init.sh"; path_prepend_ ../parted
|
||||||
|
+
|
||||||
|
+require_root_
|
||||||
|
+require_scsi_debug_module_
|
||||||
|
+
|
||||||
|
+grep '^#define USE_BLKID 1' "$CONFIG_HEADER" > /dev/null ||
|
||||||
|
+ skip_ 'this system lacks a new-enough libblkid'
|
||||||
|
+
|
||||||
|
+# What filesystem tools are present?
|
||||||
|
+FSTYPES=""
|
||||||
|
+
|
||||||
|
+# Is mkfs.hfsplus available?
|
||||||
|
+mkfs.hfsplus 2>&1 | grep '^usage:' && FSTYPES="hfs+"
|
||||||
|
+
|
||||||
|
+# Is mkfs.vfat available?
|
||||||
|
+mkfs.vfat 2>&1 | grep '^Usage:' && FSTYPES="$FSTYPES fat32"
|
||||||
|
+
|
||||||
|
+# Is mkswap available?
|
||||||
|
+mkswap -V 2>&1 | grep '^mkswap' && FSTYPES="$FSTYPES linux-swap"
|
||||||
|
+
|
||||||
|
+[ -n "$FSTYPES" ] || skip_ "No supported filesystem tools (vfat, hfs+, swap) installed"
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+# create memory-backed device
|
||||||
|
+scsi_debug_setup_ dev_size_mb=25 > dev-name ||
|
||||||
|
+ skip_ 'failed to create scsi_debug device'
|
||||||
|
+scsi_dev=$(cat dev-name)
|
||||||
|
+
|
||||||
|
+# Create a formatted partition.
|
||||||
|
+# Set a different partition type on it, eg. lvm, then unset it.
|
||||||
|
+# The partition flag should return to the detected filesystem type.
|
||||||
|
+
|
||||||
|
+for fs_type in $FSTYPES; do
|
||||||
|
+ echo "fs_type=$fs_type"
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+ parted -s $scsi_dev mklabel gpt mkpart first $fs_type 1MB 25MB > out 2>&1 || fail=1
|
||||||
|
+ # expect no output
|
||||||
|
+ compare /dev/null out || fail=1
|
||||||
|
+
|
||||||
|
+ p1=${scsi_dev}1
|
||||||
|
+ wait_for_dev_to_appear_ $p1 || fail=1
|
||||||
|
+
|
||||||
|
+ case $fs_type in
|
||||||
|
+ fat32) mkfs.vfat $p1 || fail=1 ;;
|
||||||
|
+ hfs*) mkfs.hfsplus $p1 || fail=1;;
|
||||||
|
+ linux-swap) mkswap $p1 || fail=1;;
|
||||||
|
+ *) error "internal error: unhandled fs type: $fs_type";;
|
||||||
|
+ esac
|
||||||
|
+
|
||||||
|
+ # Confirm the filesystem and flags are as expected
|
||||||
|
+ parted -s $scsi_dev u s p > out || fail=1
|
||||||
|
+ case $fs_type in
|
||||||
|
+ fat32) grep 'fat16.*msftdata$' out || { fail=1; cat out; } ;;
|
||||||
|
+ hfs*) grep 'hfs+.*first$' out || { fail=1; cat out; } ;;
|
||||||
|
+ linux-swap) grep 'linux-swap.*swap$' out || { fail=1; cat out; } ;;
|
||||||
|
+ *) error "internal error: unhandled fs type: $fs_type";;
|
||||||
|
+ esac
|
||||||
|
+
|
||||||
|
+ # Set the lvm GUID on the partition
|
||||||
|
+ parted -s $scsi_dev set 1 lvm on > out 2>&1 || fail=1
|
||||||
|
+ # expect no output
|
||||||
|
+ compare /dev/null out || fail=1
|
||||||
|
+
|
||||||
|
+ # Confirm filesystem probe is the same, but flags are now lvm
|
||||||
|
+ parted -s $scsi_dev u s p > out || fail=1
|
||||||
|
+ case $fs_type in
|
||||||
|
+ fat32) grep 'fat16.*lvm$' out || { fail=1; cat out; } ;;
|
||||||
|
+ hfs*) grep 'hfs+.*lvm$' out || { fail=1; cat out; } ;;
|
||||||
|
+ linux-swap) grep 'linux-swap.*lvm$' out || { fail=1; cat out; } ;;
|
||||||
|
+ *) error "internal error: unhandled fs type: $fs_type";;
|
||||||
|
+ esac
|
||||||
|
+
|
||||||
|
+ # Unset the lvm GUID on both partitions
|
||||||
|
+ parted -s $scsi_dev set 1 lvm off > out 2>&1 || fail=1
|
||||||
|
+ # expect no output
|
||||||
|
+ compare /dev/null out || fail=1
|
||||||
|
+
|
||||||
|
+ # Confirm the filesystem and flags are as expected
|
||||||
|
+ parted -s $scsi_dev u s p > out || fail=1
|
||||||
|
+ case $fs_type in
|
||||||
|
+ fat32) grep 'fat16.*msftdata$' out || { fail=1; cat out; } ;;
|
||||||
|
+ hfs*) grep 'hfs+.*first$' out || { fail=1; cat out; } ;;
|
||||||
|
+ linux-swap) grep 'linux-swap.*swap$' out || { fail=1; cat out; } ;;
|
||||||
|
+ *) error "internal error: unhandled fs type: $fs_type";;
|
||||||
|
+ esac
|
||||||
|
+done
|
||||||
|
+
|
||||||
|
+Exit $fail
|
||||||
|
--
|
||||||
|
2.31.1
|
||||||
|
|
@ -0,0 +1,25 @@
|
|||||||
|
From a1f8bcde22bbd97ef7abae3c83ede77fc25a301c Mon Sep 17 00:00:00 2001
|
||||||
|
From: "Brian C. Lane" <bcl@redhat.com>
|
||||||
|
Date: Thu, 30 Sep 2021 13:16:12 -0700
|
||||||
|
Subject: [PATCH 43/43] gpt: Revert to filesystem GUID when setting flag to off
|
||||||
|
|
||||||
|
---
|
||||||
|
libparted/labels/gpt.c | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/libparted/labels/gpt.c b/libparted/labels/gpt.c
|
||||||
|
index 8b345d5..c5d7bb3 100644
|
||||||
|
--- a/libparted/labels/gpt.c
|
||||||
|
+++ b/libparted/labels/gpt.c
|
||||||
|
@@ -1565,7 +1565,7 @@ gpt_partition_set_flag (PedPartition *part, PedPartitionFlag flag, int state)
|
||||||
|
if (state)
|
||||||
|
gpt_part_data->type = p->type_uuid;
|
||||||
|
else if (guid_cmp (gpt_part_data->type, p->type_uuid) == 0)
|
||||||
|
- gpt_part_data->type = PARTITION_LINUX_DATA_GUID;
|
||||||
|
+ return gpt_partition_set_system (part, part->fs_type);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
--
|
||||||
|
2.31.1
|
||||||
|
|
15
parted.spec
15
parted.spec
@ -1,7 +1,7 @@
|
|||||||
Summary: The GNU disk partition manipulation program
|
Summary: The GNU disk partition manipulation program
|
||||||
Name: parted
|
Name: parted
|
||||||
Version: 3.4
|
Version: 3.4
|
||||||
Release: 9%{?dist}
|
Release: 10%{?dist}
|
||||||
License: GPLv3+
|
License: GPLv3+
|
||||||
URL: http://www.gnu.org/software/parted
|
URL: http://www.gnu.org/software/parted
|
||||||
|
|
||||||
@ -49,6 +49,12 @@ Patch0035: 0035-hurd-Fix-partition-paths.patch
|
|||||||
Patch0036: 0036-hurd-Support-rumpdisk-based-device-names.patch
|
Patch0036: 0036-hurd-Support-rumpdisk-based-device-names.patch
|
||||||
Patch0037: 0037-hurd-Implement-partition-table-rereading.patch
|
Patch0037: 0037-hurd-Implement-partition-table-rereading.patch
|
||||||
Patch0038: 0038-keep-GUID-specific-attributes.patch
|
Patch0038: 0038-keep-GUID-specific-attributes.patch
|
||||||
|
Patch0039: 0039-gpt-Map-PED_PARTITON_-flags-to-GUID-values.patch
|
||||||
|
Patch0040: 0040-gpt-Add-linux-home-flag.patch
|
||||||
|
Patch0041: 0041-doc-Document-gpt-linux-home-flag.patch
|
||||||
|
Patch0042: 0042-tests-Add-a-test-to-make-sure-GPT-GUIDs-default-to-f.patch
|
||||||
|
Patch0043: 0043-gpt-Revert-to-filesystem-GUID-when-setting-flag-to-o.patch
|
||||||
|
|
||||||
|
|
||||||
BuildRequires: gcc
|
BuildRequires: gcc
|
||||||
BuildRequires: e2fsprogs-devel
|
BuildRequires: e2fsprogs-devel
|
||||||
@ -152,6 +158,13 @@ make check
|
|||||||
|
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Wed Oct 06 2021 Brian C. Lane <bcl@redhat.com> - 3.4-10
|
||||||
|
- gpt: Revert to filesystem GUID when setting flag to off (bcl)
|
||||||
|
- tests: Add a test to make sure GPT GUIDs default to filesystem (bcl)
|
||||||
|
- doc: Document gpt linux-home flag (bcl)
|
||||||
|
- gpt: Add linux-home flag (aschnell)
|
||||||
|
- gpt: Map PED_PARTITON_ flags to GUID values (aschnell)
|
||||||
|
|
||||||
* Thu Sep 23 2021 Brian C. Lane <bcl@redhat.com> - 3.4-9
|
* Thu Sep 23 2021 Brian C. Lane <bcl@redhat.com> - 3.4-9
|
||||||
- keep GUID specific attributes (aschnell)
|
- keep GUID specific attributes (aschnell)
|
||||||
- hurd: Implement partition table rereading (cjwatson)
|
- hurd: Implement partition table rereading (cjwatson)
|
||||||
|
Loading…
Reference in New Issue
Block a user