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




Reply via email to