Hi,
I think it will be better if you can send your patch with #git send-email.
It is not convenient to comment your patch if you put it in attaches file.
So I just paste it out. I got some comments below.;-)
On 12/1/2016 7:28 PM, Arvin Schnell wrote:
Hi,
attached is a patch to support displaying and setting (on already
existing partitions) the swap flag on GPT partitions.
So far the swap flag can only be set when creating a partition
and setting the file-system to linux-swap.
Output of print looks like:
Model: Maxtor 6 Y080L0 (scsi)
Disk /dev/sdb: 82.0GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End SizeFile system Name Flags
1 1049kB 8197MB 8196MB linux-swap(v1)swap
2 8197MB 16.4GB 8196MB
Note that "linux-swap(v1)" and "swap" are independent, any
combination is possible.
Feedback is welcome.
ciao
Arvin
diff --git a/libparted/labels/gpt.c b/libparted/labels/gpt.c
index d69377a..4b5f89a 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);
Lines above except *gpt_part_data->swap exist before. *I didn't see any
changes compared to the source code.
+case PED_PARTITION_SWAP:
+ gpt_part_data->swap = state;
+ if (state)
+gpt_part_data->boot
+ = gpt_part_data->lvm
I guess this patch is not based on the master?
Because I saw swap here is not implemented. Just one line
*case PED_PARTITION_SWAP: *But your code shows not like this.**This case is new
so other flag should be set to 0*, *and line
related this should be new line, but I could see them.**