Accepting request 332111 from Base:System
1 OBS-URL: https://build.opensuse.org/request/show/332111 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/parted?expand=0&rev=108
This commit is contained in:
commit
2572ec2cce
@ -86,7 +86,7 @@ Index: parted-3.2/libparted/labels/gpt.c
|
|||||||
static PedDisk *
|
static PedDisk *
|
||||||
gpt_alloc (const PedDevice *dev)
|
gpt_alloc (const PedDevice *dev)
|
||||||
{
|
{
|
||||||
@@ -553,6 +609,36 @@ error:
|
@@ -553,6 +609,50 @@ error:
|
||||||
}
|
}
|
||||||
|
|
||||||
static PedDisk *
|
static PedDisk *
|
||||||
@ -99,18 +99,32 @@ Index: parted-3.2/libparted/labels/gpt.c
|
|||||||
+ disk = _ped_disk_alloc ((PedDevice *) dev, &gpt_sync_mbr_disk_type);
|
+ disk = _ped_disk_alloc ((PedDevice *) dev, &gpt_sync_mbr_disk_type);
|
||||||
+ if (!disk)
|
+ if (!disk)
|
||||||
+ goto error;
|
+ goto error;
|
||||||
+ disk->disk_specific = gpt_disk_data = ped_malloc (sizeof (GPTDiskData));
|
|
||||||
+ if (!disk->disk_specific)
|
|
||||||
+ goto error_free_disk;
|
|
||||||
+
|
+
|
||||||
+ data_start = 2 + GPT_DEFAULT_PARTITION_ENTRY_ARRAY_SIZE / dev->sector_size;
|
+ data_start = 2 + GPT_DEFAULT_PARTITION_ENTRY_ARRAY_SIZE / dev->sector_size;
|
||||||
+ data_end = dev->length - 2
|
+ data_end = dev->length - 2
|
||||||
+ - GPT_DEFAULT_PARTITION_ENTRY_ARRAY_SIZE / dev->sector_size;
|
+ - GPT_DEFAULT_PARTITION_ENTRY_ARRAY_SIZE / dev->sector_size;
|
||||||
|
+
|
||||||
|
+ /* If the device is too small to accommodate GPT headers and one data
|
||||||
|
+ sector, reject it. */
|
||||||
|
+ if (data_end < data_start)
|
||||||
|
+ {
|
||||||
|
+ ped_exception_throw (PED_EXCEPTION_ERROR,
|
||||||
|
+ PED_EXCEPTION_OK,
|
||||||
|
+ _("device is too small for GPT"));
|
||||||
|
+ goto error_free_disk;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ disk->disk_specific = gpt_disk_data = ped_malloc (sizeof (GPTDiskData));
|
||||||
|
+ if (!disk->disk_specific)
|
||||||
|
+ goto error_free_disk;
|
||||||
|
+
|
||||||
|
+ gpt_disk_data->AlternateLBA = dev->length - 1;
|
||||||
+ ped_geometry_init (&gpt_disk_data->data_area, dev, data_start,
|
+ ped_geometry_init (&gpt_disk_data->data_area, dev, data_start,
|
||||||
+ data_end - data_start + 1);
|
+ data_end - data_start + 1);
|
||||||
+ gpt_disk_data->entry_count = GPT_DEFAULT_PARTITION_ENTRIES;
|
+ gpt_disk_data->entry_count = GPT_DEFAULT_PARTITION_ENTRIES;
|
||||||
+ uuid_generate ((unsigned char *) &gpt_disk_data->uuid);
|
+ uuid_generate ((unsigned char *) &gpt_disk_data->uuid);
|
||||||
+ swap_uuid_and_efi_guid ((unsigned char *) (&gpt_disk_data->uuid));
|
+ swap_uuid_and_efi_guid ((unsigned char *) (&gpt_disk_data->uuid));
|
||||||
|
+ gpt_disk_data->pmbr_boot = 0;
|
||||||
+ return disk;
|
+ return disk;
|
||||||
+
|
+
|
||||||
+error_free_disk:
|
+error_free_disk:
|
||||||
@ -123,7 +137,7 @@ Index: parted-3.2/libparted/labels/gpt.c
|
|||||||
gpt_duplicate (const PedDisk *disk)
|
gpt_duplicate (const PedDisk *disk)
|
||||||
{
|
{
|
||||||
PedDisk *new_disk;
|
PedDisk *new_disk;
|
||||||
@@ -963,7 +1049,7 @@ gpt_read (PedDisk *disk)
|
@@ -963,7 +1063,7 @@ gpt_read (PedDisk *disk)
|
||||||
|
|
||||||
/* motivation: let the user decide about the pmbr... during
|
/* motivation: let the user decide about the pmbr... during
|
||||||
ped_disk_probe(), they probably didn't get a choice... */
|
ped_disk_probe(), they probably didn't get a choice... */
|
||||||
@ -132,7 +146,7 @@ Index: parted-3.2/libparted/labels/gpt.c
|
|||||||
goto error;
|
goto error;
|
||||||
|
|
||||||
GuidPartitionTableHeader_t *gpt = NULL;
|
GuidPartitionTableHeader_t *gpt = NULL;
|
||||||
@@ -1120,11 +1206,59 @@ error:
|
@@ -1120,11 +1220,59 @@ error:
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -193,7 +207,7 @@ Index: parted-3.2/libparted/labels/gpt.c
|
|||||||
/* The UEFI spec is not clear about what to do with the following
|
/* The UEFI spec is not clear about what to do with the following
|
||||||
elements of the Protective MBR (pmbr): BootCode (0-440B),
|
elements of the Protective MBR (pmbr): BootCode (0-440B),
|
||||||
UniqueMBRSignature (440B-444B) and Unknown (444B-446B).
|
UniqueMBRSignature (440B-444B) and Unknown (444B-446B).
|
||||||
@@ -1138,6 +1272,8 @@ _write_pmbr (PedDevice *dev, bool pmbr_b
|
@@ -1138,6 +1286,8 @@ _write_pmbr (PedDevice *dev, bool pmbr_b
|
||||||
memset (pmbr->PartitionRecord, 0, sizeof pmbr->PartitionRecord);
|
memset (pmbr->PartitionRecord, 0, sizeof pmbr->PartitionRecord);
|
||||||
|
|
||||||
pmbr->Signature = PED_CPU_TO_LE16 (MSDOS_MBR_SIGNATURE);
|
pmbr->Signature = PED_CPU_TO_LE16 (MSDOS_MBR_SIGNATURE);
|
||||||
@ -202,7 +216,7 @@ Index: parted-3.2/libparted/labels/gpt.c
|
|||||||
pmbr->PartitionRecord[0].OSType = EFI_PMBR_OSTYPE_EFI;
|
pmbr->PartitionRecord[0].OSType = EFI_PMBR_OSTYPE_EFI;
|
||||||
pmbr->PartitionRecord[0].StartSector = 1;
|
pmbr->PartitionRecord[0].StartSector = 1;
|
||||||
pmbr->PartitionRecord[0].EndHead = 0xFE;
|
pmbr->PartitionRecord[0].EndHead = 0xFE;
|
||||||
@@ -1150,6 +1286,60 @@ _write_pmbr (PedDevice *dev, bool pmbr_b
|
@@ -1150,6 +1300,60 @@ _write_pmbr (PedDevice *dev, bool pmbr_b
|
||||||
pmbr->PartitionRecord[0].SizeInLBA = PED_CPU_TO_LE32 (dev->length - 1UL);
|
pmbr->PartitionRecord[0].SizeInLBA = PED_CPU_TO_LE32 (dev->length - 1UL);
|
||||||
if (pmbr_boot)
|
if (pmbr_boot)
|
||||||
pmbr->PartitionRecord[0].BootIndicator = 0x80;
|
pmbr->PartitionRecord[0].BootIndicator = 0x80;
|
||||||
@ -263,7 +277,7 @@ Index: parted-3.2/libparted/labels/gpt.c
|
|||||||
|
|
||||||
int write_ok = ped_device_write (dev, pmbr, GPT_PMBR_LBA,
|
int write_ok = ped_device_write (dev, pmbr, GPT_PMBR_LBA,
|
||||||
GPT_PMBR_SECTORS);
|
GPT_PMBR_SECTORS);
|
||||||
@@ -1269,7 +1459,7 @@ gpt_write (const PedDisk *disk)
|
@@ -1269,7 +1473,7 @@ gpt_write (const PedDisk *disk)
|
||||||
ptes_crc = efi_crc32 (ptes, ptes_bytes);
|
ptes_crc = efi_crc32 (ptes, ptes_bytes);
|
||||||
|
|
||||||
/* Write protective MBR */
|
/* Write protective MBR */
|
||||||
@ -272,7 +286,7 @@ Index: parted-3.2/libparted/labels/gpt.c
|
|||||||
goto error_free_ptes;
|
goto error_free_ptes;
|
||||||
|
|
||||||
/* Write PTH and PTEs */
|
/* Write PTH and PTEs */
|
||||||
@@ -2034,6 +2224,38 @@ static PedDiskOps gpt_disk_ops =
|
@@ -2034,6 +2238,38 @@ static PedDiskOps gpt_disk_ops =
|
||||||
PT_op_function_initializers (gpt)
|
PT_op_function_initializers (gpt)
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -311,7 +325,7 @@ Index: parted-3.2/libparted/labels/gpt.c
|
|||||||
static PedDiskType gpt_disk_type =
|
static PedDiskType gpt_disk_type =
|
||||||
{
|
{
|
||||||
next: NULL,
|
next: NULL,
|
||||||
@@ -2042,16 +2264,26 @@ static PedDiskType gpt_disk_type =
|
@@ -2042,16 +2278,26 @@ static PedDiskType gpt_disk_type =
|
||||||
features: PED_DISK_TYPE_PARTITION_NAME
|
features: PED_DISK_TYPE_PARTITION_NAME
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1,3 +1,9 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Thu Sep 10 09:18:30 UTC 2015 - fvogt@suse.com
|
||||||
|
|
||||||
|
- Update parted-gpt-mbr-sync.patch to fix bsc#945068
|
||||||
|
Basically just a copy of gpt_alloc with minor modifications now
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Tue May 26 11:21:37 UTC 2015 - puzel@suse.com
|
Tue May 26 11:21:37 UTC 2015 - puzel@suse.com
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user