Subject: RE: [parted-devel] [PATCH] GPT: add support for PReP GUID

From: "Elliott, Robert (Server Storage)" <[email-masked]>
Date: Fri, 4 Oct 2013 14:19:04 +0000

You might want to include a comment somewhere explaining what PReP is ("PowerPC Reference Platform").

---
Rob Elliott    HP Server Storage

> -----Original Message-----
> From: parted-devel [mailto:parted-devel-
> bounces+elliott=[email-masked]] On Behalf Of Avik Sil
> Sent: Friday, 04 October, 2013 4:17 AM
> To: [email-masked]; [email-masked]
> Cc: [email-masked]
> Subject: [parted-devel] [PATCH] GPT: add support for PReP GUID
> 
> From: Daniel Battaiola Kreling <[email-masked]>
> 
> A new GUID 9e1a2d38-c612-4316-aa26-8b49521e5a8b for PReP partition
> is proposed to be included in GPT.
> ---
>  libparted/labels/gpt.c | 38 ++++++++++++++++++++++++++++++++++++++
>  1 file changed, 38 insertions(+)
> 
> diff --git a/libparted/labels/gpt.c b/libparted/labels/gpt.c
> index 490de70..ee8148d 100644
> --- a/libparted/labels/gpt.c
> +++ b/libparted/labels/gpt.c
> @@ -146,6 +146,10 @@ typedef struct
>      ((efi_guid_t) { PED_CPU_TO_LE32 (0x5265636F), PED_CPU_TO_LE16
> (0x7665), \
>                      PED_CPU_TO_LE16 (0x11AA), 0xaa, 0x11, \
>                      { 0x00, 0x30, 0x65, 0x43, 0xEC, 0xAC }})
> +#define PARTITION_PREP_GUID \
> +    ((efi_guid_t) { PED_CPU_TO_LE32 (0x9e1a2d38), PED_CPU_TO_LE16
> (0xc612), \
> +                    PED_CPU_TO_LE16 (0x4316), 0xaa, 0x26, \
> +                    { 0x8b, 0x49, 0x52, 0x1e, 0x5a, 0x8b }})
> 
>  struct __attribute__ ((packed)) _GuidPartitionTableHeader_t
>  {
> @@ -288,6 +292,7 @@ typedef struct _GPTPartitionData
>    int atvrecv;
>    int msftrecv;
>    int legacy_boot;
> +  int prep;
>  } GPTPartitionData;
> 
>  static PedDiskType gpt_disk_type;
> @@ -796,6 +801,7 @@ _parse_part_entry (PedDisk *disk, GuidPartitionEntry_t
> *pte)
>      = gpt_part_data->msftdata
>      = gpt_part_data->msftrecv
>      = gpt_part_data->legacy_boot
> +    = gpt_part_data->prep
>      = gpt_part_data->bios_grub = gpt_part_data->atvrecv = 0;
> 
>    if (pte->Attributes.RequiredToFunction & 0x1)
> @@ -821,6 +827,8 @@ _parse_part_entry (PedDisk *disk, GuidPartitionEntry_t
> *pte)
>      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;
> 
>    return part;
>  }
> @@ -1338,6 +1346,7 @@ gpt_partition_new (const PedDisk *disk,
>    gpt_part_data->msftrecv = 0;
>    gpt_part_data->atvrecv = 0;
>    gpt_part_data->legacy_boot = 0;
> +  gpt_part_data->prep = 0;
>    uuid_generate ((unsigned char *) &gpt_part_data->uuid);
>    swap_uuid_and_efi_guid ((unsigned char *) (&gpt_part_data->uuid));
>    memset (gpt_part_data->name, 0, sizeof gpt_part_data->name);
> @@ -1411,6 +1420,11 @@ gpt_partition_set_system (PedPartition *part,
>        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;
> @@ -1587,6 +1601,7 @@ gpt_partition_set_flag (PedPartition *part,
> PedPartitionFlag flag, int state)
>            = gpt_part_data->msftres
>            = gpt_part_data->msftdata
>            = gpt_part_data->msftrecv
> +          = gpt_part_data->prep
>            = gpt_part_data->atvrecv = 0;
>        return gpt_partition_set_system (part, part->fs_type);
>      case PED_PARTITION_BIOS_GRUB:
> @@ -1599,6 +1614,7 @@ gpt_partition_set_flag (PedPartition *part,
> PedPartitionFlag flag, int state)
>            = gpt_part_data->msftres
>            = gpt_part_data->msftdata
>            = gpt_part_data->msftrecv
> +          = gpt_part_data->prep
>            = gpt_part_data->atvrecv = 0;
>        return gpt_partition_set_system (part, part->fs_type);
>      case PED_PARTITION_RAID:
> @@ -1611,6 +1627,7 @@ gpt_partition_set_flag (PedPartition *part,
> PedPartitionFlag flag, int state)
>            = gpt_part_data->msftres
>            = gpt_part_data->msftdata
>            = gpt_part_data->msftrecv
> +          = gpt_part_data->prep
>            = gpt_part_data->atvrecv = 0;
>        return gpt_partition_set_system (part, part->fs_type);
>      case PED_PARTITION_LVM:
> @@ -1623,6 +1640,7 @@ gpt_partition_set_flag (PedPartition *part,
> PedPartitionFlag flag, int state)
>            = gpt_part_data->msftres
>            = gpt_part_data->msftdata
>            = gpt_part_data->msftrecv
> +          = gpt_part_data->prep
>            = gpt_part_data->atvrecv = 0;
>        return gpt_partition_set_system (part, part->fs_type);
>      case PED_PARTITION_HPSERVICE:
> @@ -1635,6 +1653,7 @@ gpt_partition_set_flag (PedPartition *part,
> PedPartitionFlag flag, int state)
>            = gpt_part_data->msftres
>            = gpt_part_data->msftdata
>            = gpt_part_data->msftrecv
> +          = gpt_part_data->prep
>            = gpt_part_data->atvrecv = 0;
>        return gpt_partition_set_system (part, part->fs_type);
>      case PED_PARTITION_MSFT_RESERVED:
> @@ -1647,6 +1666,7 @@ gpt_partition_set_flag (PedPartition *part,
> PedPartitionFlag flag, int state)
>            = gpt_part_data->hp_service
>            = gpt_part_data->msftdata
>            = gpt_part_data->msftrecv
> +          = gpt_part_data->prep
>            = gpt_part_data->atvrecv = 0;
>        return gpt_partition_set_system (part, part->fs_type);
>      case PED_PARTITION_MSFT_DATA:
> @@ -1659,6 +1679,7 @@ gpt_partition_set_flag (PedPartition *part,
> PedPartitionFlag flag, int state)
>            = gpt_part_data->hp_service
>            = gpt_part_data->msftres
>            = gpt_part_data->msftrecv
> +          = gpt_part_data->prep
>            = gpt_part_data->atvrecv = 0;
>          gpt_part_data->msftdata = 1;
>        } else {
> @@ -1675,6 +1696,7 @@ gpt_partition_set_flag (PedPartition *part,
> PedPartitionFlag flag, int state)
>            = gpt_part_data->hp_service
>            = gpt_part_data->msftdata
>            = gpt_part_data->msftres
> +          = gpt_part_data->prep
>            = gpt_part_data->atvrecv = 0;
>        return gpt_partition_set_system (part, part->fs_type);
>      case PED_PARTITION_APPLE_TV_RECOVERY:
> @@ -1687,8 +1709,21 @@ gpt_partition_set_flag (PedPartition *part,
> PedPartitionFlag flag, int state)
>            = gpt_part_data->hp_service
>            = gpt_part_data->msftres
>            = gpt_part_data->msftdata
> +          = gpt_part_data->prep
>            = 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->bios_grub
> +          = gpt_part_data->hp_service
> +          = gpt_part_data->msftres
> +          = gpt_part_data->msftrecv
> +          = gpt_part_data->atvrecv = 0;
> +      return gpt_partition_set_system (part, part->fs_type);
>      case PED_PARTITION_HIDDEN:
>        gpt_part_data->hidden = state;
>        return 1;
> @@ -1735,6 +1770,8 @@ gpt_partition_get_flag (const PedPartition *part,
> PedPartitionFlag flag)
>        return gpt_part_data->hidden;
>      case PED_PARTITION_LEGACY_BOOT:
>        return gpt_part_data->legacy_boot;
> +    case PED_PARTITION_PREP:
> +      return gpt_part_data->prep;
>      case PED_PARTITION_SWAP:
>      case PED_PARTITION_LBA:
>      case PED_PARTITION_ROOT:
> @@ -1761,6 +1798,7 @@ gpt_partition_is_flag_available (const PedPartition
> *part,
>      case PED_PARTITION_APPLE_TV_RECOVERY:
>      case PED_PARTITION_HIDDEN:
>      case PED_PARTITION_LEGACY_BOOT:
> +    case PED_PARTITION_PREP:
>        return 1;
>      case PED_PARTITION_SWAP:
>      case PED_PARTITION_ROOT:
> --
> 1.7.11.7
>