From f209b71efc693b97b7c812678e811698ffd2bc79 Mon Sep 17 00:00:00 2001 From: Arvin Schnell Date: Thu, 22 Dec 2016 14:36:43 -0800 Subject: [PATCH 62/75] libparted: set swap flag on GPT partitions The filesystem type is still detected as befor, but now setting the 'swap' flag will set the partition GUID to PARTITION_SWAP_GUID. Signed-off-by: Brian C. Lane --- libparted/labels/gpt.c | 42 +++++++++++++++++++++++++++++++++++++++--- 1 file changed, 39 insertions(+), 3 deletions(-) diff --git a/libparted/labels/gpt.c b/libparted/labels/gpt.c index 6027eb3..4f922b2 100644 --- a/libparted/labels/gpt.c +++ b/libparted/labels/gpt.c @@ -290,6 +290,7 @@ typedef struct _GPTPartitionData efi_char16_t name[37]; char *translated_name; int lvm; + int swap; int raid; int boot; int bios_grub; @@ -818,7 +819,8 @@ _parse_part_entry (PedDisk *disk, GuidPartitionEntry_t *pte) gpt_part_data->name[i] = 0; gpt_part_data->translated_name = 0; - gpt_part_data->lvm = gpt_part_data->raid + gpt_part_data->lvm = gpt_part_data->swap + = gpt_part_data->raid = gpt_part_data->boot = gpt_part_data->hp_service = gpt_part_data->hidden = gpt_part_data->msftres = gpt_part_data->msftdata @@ -841,6 +843,8 @@ _parse_part_entry (PedDisk *disk, GuidPartitionEntry_t *pte) 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)) @@ -1361,6 +1365,7 @@ gpt_partition_new (const PedDisk *disk, 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; @@ -1449,6 +1454,11 @@ gpt_partition_set_system (PedPartition *part, 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; @@ -1636,6 +1646,7 @@ gpt_partition_set_flag (PedPartition *part, PedPartitionFlag flag, int 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 @@ -1650,6 +1661,7 @@ gpt_partition_set_flag (PedPartition *part, PedPartitionFlag flag, int 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 @@ -1664,6 +1676,7 @@ gpt_partition_set_flag (PedPartition *part, PedPartitionFlag flag, int 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 @@ -1677,6 +1690,22 @@ gpt_partition_set_flag (PedPartition *part, PedPartitionFlag flag, int state) 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->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 @@ -1693,6 +1722,7 @@ gpt_partition_set_flag (PedPartition *part, PedPartitionFlag flag, int 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 @@ -1707,6 +1737,7 @@ gpt_partition_set_flag (PedPartition *part, PedPartitionFlag flag, int 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 @@ -1721,6 +1752,7 @@ gpt_partition_set_flag (PedPartition *part, PedPartitionFlag flag, int 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 @@ -1739,6 +1771,7 @@ gpt_partition_set_flag (PedPartition *part, PedPartitionFlag flag, int 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 @@ -1753,6 +1786,7 @@ gpt_partition_set_flag (PedPartition *part, PedPartitionFlag flag, int 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 @@ -1766,6 +1800,7 @@ gpt_partition_set_flag (PedPartition *part, PedPartitionFlag flag, int 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 @@ -1779,6 +1814,7 @@ gpt_partition_set_flag (PedPartition *part, PedPartitionFlag flag, int 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 @@ -1793,7 +1829,6 @@ gpt_partition_set_flag (PedPartition *part, PedPartitionFlag flag, int state) case PED_PARTITION_LEGACY_BOOT: gpt_part_data->legacy_boot = state; return 1; - case PED_PARTITION_SWAP: case PED_PARTITION_ROOT: case PED_PARTITION_LBA: default: @@ -1839,6 +1874,7 @@ gpt_partition_get_flag (const PedPartition *part, PedPartitionFlag flag) case PED_PARTITION_IRST: return gpt_part_data->irst; case PED_PARTITION_SWAP: + return gpt_part_data->swap; case PED_PARTITION_LBA: case PED_PARTITION_ROOT: default: @@ -1855,6 +1891,7 @@ gpt_partition_is_flag_available (const PedPartition *part, { 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: @@ -1868,7 +1905,6 @@ gpt_partition_is_flag_available (const PedPartition *part, case PED_PARTITION_IRST: case PED_PARTITION_ESP: return 1; - case PED_PARTITION_SWAP: case PED_PARTITION_ROOT: case PED_PARTITION_LBA: default: -- 2.9.3