From 24fd71348c6e2548a7e2536c3fdc0c3829b643957efc0ff1a6accf76274b3d91 Mon Sep 17 00:00:00 2001 From: Petr Uzel Date: Fri, 1 Aug 2014 12:43:34 +0000 Subject: [PATCH] - Fix a bug where cylinders can be treated by parted as exact location, which prevents it from adjusting partition/start end. (bnc#880369) - libparted-make-sure-not-to-treat-percentages-and-cyls-as-exact.patch OBS-URL: https://build.opensuse.org/package/show/Base:System/parted?expand=0&rev=99 --- ...-treat-percentages-and-cyls-as-exact.patch | 31 +++++++++++++++++++ parted.changes | 8 +++++ parted.spec | 2 ++ 3 files changed, 41 insertions(+) create mode 100644 libparted-make-sure-not-to-treat-percentages-and-cyls-as-exact.patch diff --git a/libparted-make-sure-not-to-treat-percentages-and-cyls-as-exact.patch b/libparted-make-sure-not-to-treat-percentages-and-cyls-as-exact.patch new file mode 100644 index 0000000..406393d --- /dev/null +++ b/libparted-make-sure-not-to-treat-percentages-and-cyls-as-exact.patch @@ -0,0 +1,31 @@ +From 01900e056ec250836d15b5f5c3f59a8e1454b781 Mon Sep 17 00:00:00 2001 +From: Phillip Susi +Date: Mon, 4 Nov 2013 13:10:09 -0500 +Subject: [PATCH] libparted: make sure not to treat percentages as exact + +If 1% of the drive size worked out ot be an even power of +two, it would trigger the exact placement. Add an exception +for the percent units. + +Petr Uzel : +Also avoid this logic when the unit is specified as cylinders. + +--- + libparted/unit.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +Index: parted-3.1/libparted/unit.c +=================================================================== +--- parted-3.1.orig/libparted/unit.c ++++ parted-3.1/libparted/unit.c +@@ -551,7 +551,9 @@ ped_unit_parse_custom (const char* str, + do not use 4MiB as the range. Rather, presume that they + are specifying precisely the starting or ending number, + and treat "4MiB" just as we would treat "4194304B". */ +- if (is_power_of_2 (unit_size)) ++ if (is_power_of_2 (unit_size) && ++ unit != PED_UNIT_PERCENT && ++ unit != PED_UNIT_CYLINDER) + radius = 0; + + *sector = num * unit_size / dev->sector_size; diff --git a/parted.changes b/parted.changes index 7d7481f..db4b0fd 100644 --- a/parted.changes +++ b/parted.changes @@ -1,3 +1,11 @@ +------------------------------------------------------------------- +Fri Jul 25 15:43:42 UTC 2014 - puzel@suse.com + +- Fix a bug where cylinders can be treated by parted as exact + location, which prevents it from adjusting partition/start end. + (bnc#880369) + - libparted-make-sure-not-to-treat-percentages-and-cyls-as-exact.patch + ------------------------------------------------------------------- Fri Jul 18 10:10:07 UTC 2014 - puzel@suse.com diff --git a/parted.spec b/parted.spec index 6738454..7068450 100644 --- a/parted.spec +++ b/parted.spec @@ -65,6 +65,7 @@ Patch37: libparted-mklabel-to-support-EAV-DASD.patch 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 Patch100: parted-fatresize-autoconf.patch Requires: /sbin/udevadm BuildRequires: check-devel @@ -152,6 +153,7 @@ to develop applications that require these. %patch38 -p1 %patch39 -p1 %patch40 -p1 +%patch41 -p1 %patch100 -p1 %build