From 64eafa17eadb8a08794bd77361a3a4fc81707e78dfd6029692060b0f1c46865f Mon Sep 17 00:00:00 2001 From: Petr Uzel Date: Mon, 22 Sep 2014 10:40:52 +0000 Subject: [PATCH] - Add an "implicit_partition_table" disk flag to mark FBA DASD disks with fake partition (bnc#894585) - libparted-dasd-implicit-partition-disk-flag.patch - refresh following patches to fix build: - parted-type.patch - parted-mac.patch - parted-Add-Intel-Rapid-Start-Technology-partition.patch OBS-URL: https://build.opensuse.org/package/show/Base:System/parted?expand=0&rev=105 --- ...ed-dasd-implicit-partition-disk-flag.patch | 127 ++++++++++++++++++ ...tel-Rapid-Start-Technology-partition.patch | 16 +-- parted-mac.patch | 18 +-- parted-type.patch | 18 +-- parted.changes | 11 ++ parted.spec | 2 + 6 files changed, 166 insertions(+), 26 deletions(-) create mode 100644 libparted-dasd-implicit-partition-disk-flag.patch diff --git a/libparted-dasd-implicit-partition-disk-flag.patch b/libparted-dasd-implicit-partition-disk-flag.patch new file mode 100644 index 0000000..c94e2a3 --- /dev/null +++ b/libparted-dasd-implicit-partition-disk-flag.patch @@ -0,0 +1,127 @@ +--- + include/parted/disk.in.h | 4 +++- + libparted/disk.c | 2 ++ + libparted/labels/dasd.c | 45 +++++++++++++++++++++++++++++++++++++++++++++ + 3 files changed, 50 insertions(+), 1 deletion(-) + +Index: parted-3.1/include/parted/disk.in.h +=================================================================== +--- parted-3.1.orig/include/parted/disk.in.h ++++ parted-3.1/include/parted/disk.in.h +@@ -38,9 +38,11 @@ enum _PedDiskFlag { + PED_DISK_CYLINDER_ALIGNMENT=1, + /* This flag controls whether the boot flag of a GPT PMBR is set */ + PED_DISK_GPT_PMBR_BOOT=2, ++ /* This flag indicates that there is an implicit (aka fake) partition on the DASD disk */ ++ PED_DISK_DASD_IMPLICIT_PARTITION=3, + }; + #define PED_DISK_FIRST_FLAG PED_DISK_CYLINDER_ALIGNMENT +-#define PED_DISK_LAST_FLAG PED_DISK_GPT_PMBR_BOOT ++#define PED_DISK_LAST_FLAG PED_DISK_DASD_IMPLICIT_PARTITION + + /** + * Partition types +Index: parted-3.1/libparted/disk.c +=================================================================== +--- parted-3.1.orig/libparted/disk.c ++++ parted-3.1/libparted/disk.c +@@ -838,6 +838,8 @@ ped_disk_flag_get_name(PedDiskFlag flag) + return N_("cylinder_alignment"); + case PED_DISK_GPT_PMBR_BOOT: + return N_("pmbr_boot"); ++ case PED_DISK_DASD_IMPLICIT_PARTITION: ++ return N_("implicit_partition_table"); + default: + ped_exception_throw ( + PED_EXCEPTION_BUG, +Index: parted-3.1/libparted/labels/dasd.c +=================================================================== +--- parted-3.1.orig/libparted/labels/dasd.c ++++ parted-3.1/libparted/labels/dasd.c +@@ -73,6 +73,7 @@ typedef struct { + unsigned int format_type; + unsigned int label_block; + volume_label_t vlabel; ++ unsigned int has_implicit_partition; + } DasdDiskSpecific; + + static int dasd_probe (const PedDevice *dev); +@@ -107,6 +108,10 @@ static int dasd_partition_set_system (Pe + const PedFileSystemType* fs_type); + static int dasd_alloc_metadata (PedDisk* disk); + ++static int dasd_disk_set_flag (PedDisk *disk, PedDiskFlag flag, int state); ++static int dasd_disk_is_flag_available(const PedDisk *disk, PedDiskFlag flag); ++static int dasd_disk_get_flag (const PedDisk *disk, PedDiskFlag flag); ++ + #include "pt-common.h" + PT_define_limit_functions (dasd) + +@@ -116,6 +121,9 @@ static PedDiskOps dasd_disk_ops = { + + partition_set_name: NULL, + partition_get_name: NULL, ++ disk_set_flag: dasd_disk_set_flag, ++ disk_get_flag: dasd_disk_get_flag, ++ disk_is_flag_available: dasd_disk_is_flag_available, + + get_partition_alignment: dasd_get_partition_alignment, + +@@ -150,6 +158,8 @@ dasd_alloc (const PedDevice* dev) + return NULL; + } + ++ disk_specific->has_implicit_partition = 0; ++ + /* CDL format, newer */ + disk_specific->format_type = 2; + disk_specific->label_block = 2; +@@ -293,6 +303,7 @@ dasd_read (PedDisk* disk) + goto error_close_dev; + + disk_specific->format_type = 1; ++ disk_specific->has_implicit_partition = 1; + + /* Register implicit partition */ + ped_disk_delete_all (disk); +@@ -905,6 +916,40 @@ dasd_partition_enumerate (PedPartition* + } + + static int ++dasd_disk_set_flag (PedDisk *disk, PedDiskFlag flag, int state) ++{ ++ /* PED_DISK_DASD_IMPLICIT_PARTITION is immutable */ ++ return 0; ++} ++ ++static int ++dasd_disk_is_flag_available(const PedDisk *disk, PedDiskFlag flag) ++{ ++ switch (flag) ++ { ++ case PED_DISK_DASD_IMPLICIT_PARTITION: ++ return 1; ++ default: ++ return 0; ++ } ++} ++ ++static int ++dasd_disk_get_flag (const PedDisk *disk, PedDiskFlag flag) ++{ ++ DasdDiskSpecific* disk_specific = disk->disk_specific; ++ ++ switch (flag) ++ { ++ case PED_DISK_DASD_IMPLICIT_PARTITION: ++ return disk_specific->has_implicit_partition; ++ break; ++ default: ++ return 0; ++ } ++} ++ ++static int + dasd_partition_set_system (PedPartition* part, + const PedFileSystemType* fs_type) + { diff --git a/parted-Add-Intel-Rapid-Start-Technology-partition.patch b/parted-Add-Intel-Rapid-Start-Technology-partition.patch index b3b47bb..65996e3 100644 --- a/parted-Add-Intel-Rapid-Start-Technology-partition.patch +++ b/parted-Add-Intel-Rapid-Start-Technology-partition.patch @@ -8,11 +8,11 @@ This adds support for the irst partition type flag. Sets the type to 0x84 on MS-DOS and D3BFE2DE-3DAF-11DF-BA-40-E3A556D89593 on GPT. --- - doc/C/parted.8 | 2 +- - include/parted/disk.h | 5 +++-- - libparted/disk.c | 2 ++ - libparted/labels/dos.c | 21 +++++++++++++++++++++ - libparted/labels/gpt.c | 37 +++++++++++++++++++++++++++++++++++++ + doc/C/parted.8 | 2 +- + include/parted/disk.in.h | 5 +++-- + libparted/disk.c | 2 ++ + libparted/labels/dos.c | 21 +++++++++++++++++++++ + libparted/labels/gpt.c | 37 +++++++++++++++++++++++++++++++++++++ 5 files changed, 64 insertions(+), 3 deletions(-) Index: parted-3.1/doc/C/parted.8 @@ -28,10 +28,10 @@ Index: parted-3.1/doc/C/parted.8 \fIstate\fP should be either "on" or "off". .TP .B unit \fIunit\fP -Index: parted-3.1/include/parted/disk.h +Index: parted-3.1/include/parted/disk.in.h =================================================================== ---- parted-3.1.orig/include/parted/disk.h -+++ parted-3.1/include/parted/disk.h +--- parted-3.1.orig/include/parted/disk.in.h ++++ parted-3.1/include/parted/disk.in.h @@ -73,10 +73,11 @@ enum _PedPartitionFlag { PED_PARTITION_APPLE_TV_RECOVERY=13, PED_PARTITION_DIAG=14, diff --git a/parted-mac.patch b/parted-mac.patch index 5b6311f..f1b820a 100644 --- a/parted-mac.patch +++ b/parted-mac.patch @@ -1,14 +1,14 @@ --- - include/parted/disk.h | 9 +++++++-- - libparted/disk.c | 33 +++++++++++++++++++++++++++++++++ - libparted/labels/mac.c | 34 +++++++++++++++++++++++++++++++++- - parted/parted.c | 12 ++++++++++++ - 4 files changed, 85 insertions(+), 3 deletions(-) + include/parted/disk.in.h | 9 +++++++-- + libparted/disk.c | 33 +++++++++++++++++++++++++++++++++ + libparted/labels/mac.c | 34 +++++++++++++++++++++++++++++++++- + parted/parted.c | 12 ++++++++++++ + 5 files changed, 92 insertions(+), 5 deletions(-) -Index: parted-3.1/include/parted/disk.h +Index: parted-3.1/include/parted/disk.in.h =================================================================== ---- parted-3.1.orig/include/parted/disk.h -+++ parted-3.1/include/parted/disk.h +--- parted-3.1.orig/include/parted/disk.in.h ++++ parted-3.1/include/parted/disk.in.h @@ -80,10 +80,11 @@ enum _PedPartitionFlag { enum _PedDiskTypeFeature { @@ -32,7 +32,7 @@ Index: parted-3.1/include/parted/disk.h bool (*get_max_supported_partition_count) (const PedDisk* disk, int* supported); PedAlignment *(*get_partition_alignment)(const PedDisk *disk); -@@ -362,7 +365,9 @@ extern int ped_partition_is_flag_availab +@@ -334,7 +337,9 @@ extern int ped_partition_is_flag_availab extern int ped_partition_set_system (PedPartition* part, const PedFileSystemType* fs_type); extern int ped_partition_set_name (PedPartition* part, const char* name); diff --git a/parted-type.patch b/parted-type.patch index 0ab1615..1c25bd9 100644 --- a/parted-type.patch +++ b/parted-type.patch @@ -1,15 +1,15 @@ --- - include/parted/disk.h | 5 ++-- - libparted/disk.c | 2 + - libparted/labels/dos.c | 8 ++++++ - parted/parted.c | 59 ++++++++++++++++++++++++++++++++----------------- - parted/ui.c | 3 ++ - 5 files changed, 55 insertions(+), 22 deletions(-) + include/parted/disk.in.h | 5 ++- + libparted/disk.c | 2 + + libparted/labels/dos.c | 8 ++++++ + parted/parted.c | 59 +++++++++++++++++++++++++++++++---------------- + parted/ui.c | 3 ++ + 6 files changed, 58 insertions(+), 24 deletions(-) -Index: parted-3.1/include/parted/disk.h +Index: parted-3.1/include/parted/disk.in.h =================================================================== ---- parted-3.1.orig/include/parted/disk.h -+++ parted-3.1/include/parted/disk.h +--- parted-3.1.orig/include/parted/disk.in.h ++++ parted-3.1/include/parted/disk.in.h @@ -72,10 +72,11 @@ enum _PedPartitionFlag { PED_PARTITION_BIOS_GRUB=12, PED_PARTITION_APPLE_TV_RECOVERY=13, diff --git a/parted.changes b/parted.changes index cbbb715..eb02916 100644 --- a/parted.changes +++ b/parted.changes @@ -1,3 +1,14 @@ +------------------------------------------------------------------- +Thu Sep 11 10:30:04 UTC 2014 - puzel@suse.com + +- Add an "implicit_partition_table" disk flag to mark + FBA DASD disks with fake partition (bnc#894585) + - libparted-dasd-implicit-partition-disk-flag.patch +- refresh following patches to fix build: + - parted-type.patch + - parted-mac.patch + - parted-Add-Intel-Rapid-Start-Technology-partition.patch + ------------------------------------------------------------------- Sat Sep 6 21:47:27 UTC 2014 - andreas.stieger@gmx.de diff --git a/parted.spec b/parted.spec index d5e77b7..d508d68 100644 --- a/parted.spec +++ b/parted.spec @@ -66,6 +66,7 @@ Patch38: libparted-Avoid-dasd-as-default-disk-type-while-probe.patch Patch39: libparted-mklabel-to-support-EDEV-DASD.patch Patch40: libparted-make-BLKRRPART-more-robust.patch Patch41: libparted-make-sure-not-to-treat-percentages-and-cyls-as-exact.patch +Patch42: libparted-dasd-implicit-partition-disk-flag.patch Patch100: parted-fatresize-autoconf.patch Requires: /sbin/udevadm BuildRequires: check-devel @@ -154,6 +155,7 @@ to develop applications that require these. %patch39 -p1 %patch40 -p1 %patch41 -p1 +%patch42 -p1 %patch100 -p1 %build