On 24/03/2026 at 16:29, Brian C. Lane wrote:
On Mon, Mar 23, 2026 at 09:37:47PM +0100, Pascal Hambourg wrote:
On 23/03/2026 at 19:49, Brian C. Lane wrote:
This isn't a bug. The partition GUID is only set at creation time, using
input from the user to pick the most appropriate type. But parted isn't
(and should not be) tracking filesystem changes and changing the GUID.
This does not match my observations:
- ped_partition_set_system() can set the 'msftdata' or 'swap' flag on an
existing partition, it just cannot clear it.
- ped_partition_set_flag() sets the 'msftdata' or 'swap' flag in accordance
with the detected filesystem when clearing the GUID type flag (esp, raid...)
on an existing partition. Easy to reproduce with parted.
I must not be understanding, do you have an example script to
demonstrate the problem?
AFAIK parted does not call directly ped_partition_set_system() on an
existing partition. But the code in gpt.c is quite clear:
gpt_partition_set_system(part, fs_type)
part->fs_type = fs_type
if is_skip_guid(gpt_part_data->type) # esp, swap, msftdata...
return 1
if fstype == fat* | udf | ntfs
gpt_part_data->type = PARTITION_BASIC_DATA_GUID
else
gpt_part_data->type = PARTITION_LINUX_DATA_GUID
gpt_partition_set_flag(part, flag, state)
if gpt_find_flag_uuid_mapping(flag)
if state
gpt_part_data->type = type_uuid
else if gpt_part_data->type == type_uuid
gpt_part_data->type = PARTITION_LINUX_DATA_GUID;
gpt_partition_set_system (part, part->fs_type)
The problem occurs with partman, the Debian installer partitioning tool,
when calling ped_partition_set_system() or ped_partition_set_flag() on
an existing partition.
Here is a procedure demonstrating the second point with parted (clearing
the current type flag can set another type flag depending on the
detected file system):
Step 1: create a standard EFI partition.
# parted /dev/vdb
mklabel gpt
mkpart EFI 0% 100%
set 1 esp on
# mkfs.vfat /dev/vdb1
Step 2: Clear the 'esp' flag.
# parted /dev/vdb
print
File system Flags
fat32 boot, esp
set 1 esp off
print
File system Flags
fat32 msftdata