From f8b73f8a679991e33a538340abc275d93c16f3129b67f2d6049bb30f7aaca461 Mon Sep 17 00:00:00 2001 From: Petr Uzel Date: Mon, 17 Feb 2014 14:11:30 +0000 Subject: [PATCH] - Fixup last commit - call BLKRRPART only for DASDs - added patches: * libparted-use-BLKRRPART-for-DASD.patch.patch - removed patches: * revert-libparted-remove-now-worse-than-useless-_kern.patch * revert-linux-remove-DASD-restriction-on-_disk_sync_p.patch OBS-URL: https://build.opensuse.org/package/show/Base:System/parted?expand=0&rev=88 --- libparted-use-BLKRRPART-for-DASD.patch.patch | 82 +++++++++++++++++++ parted.changes | 9 ++ parted.spec | 4 +- ...-remove-now-worse-than-useless-_kern.patch | 59 ------------- ...ove-DASD-restriction-on-_disk_sync_p.patch | 44 ---------- 5 files changed, 92 insertions(+), 106 deletions(-) create mode 100644 libparted-use-BLKRRPART-for-DASD.patch.patch delete mode 100644 revert-libparted-remove-now-worse-than-useless-_kern.patch delete mode 100644 revert-linux-remove-DASD-restriction-on-_disk_sync_p.patch diff --git a/libparted-use-BLKRRPART-for-DASD.patch.patch b/libparted-use-BLKRRPART-for-DASD.patch.patch new file mode 100644 index 0000000..142cd04 --- /dev/null +++ b/libparted-use-BLKRRPART-for-DASD.patch.patch @@ -0,0 +1,82 @@ +From ac422c32ae3be0e599f7b3f4ab6961b61129c4ba Mon Sep 17 00:00:00 2001 +From: Petr Uzel +Date: Fri, 14 Feb 2014 09:12:47 +0100 +Subject: [PATCH] libparted-used-BLKRRPART-for-DASD.patch + +Addresses: bnc#862139 + +This reverts upstream commit 9fa0e1800db5b9f094ae481fd95a51da03f19e95. +This reverts upstream commit 1223b9fc07859cb619c80dc057bd05458f9b5669. +and some fixups on top +--- + libparted/arch/linux.c | 50 ++++++++++++++++++++++++++++++++++++++++--------- + 1 file changed, 41 insertions(+), 9 deletions(-) + +Index: parted-3.1/libparted/arch/linux.c +=================================================================== +--- parted-3.1.orig/libparted/arch/linux.c ++++ parted-3.1/libparted/arch/linux.c +@@ -2898,6 +2898,34 @@ _dm_reread_part_table (PedDisk* disk) + #endif + + static int ++_kernel_reread_part_table (PedDevice* dev) ++{ ++ LinuxSpecific* arch_specific = LINUX_SPECIFIC (dev); ++ int retry_count = 9; ++ ++ sync(); ++ while (ioctl (arch_specific->fd, BLKRRPART)) { ++ retry_count--; ++ sync(); ++ if (retry_count == 3) ++ sleep(1); /* Pause to allow system to settle */ ++ ++ if (!retry_count) { ++ ped_exception_throw ( ++ PED_EXCEPTION_WARNING, ++ PED_EXCEPTION_IGNORE, ++ _("WARNING: the kernel failed to re-read the partition " ++ "table on %s (%s). As a result, it may not " ++ "reflect all of your changes until after reboot."), ++ dev->path, strerror (errno)); ++ return 0; ++ } ++ } ++ ++ return 1; ++} ++ ++static int + _have_blkpg () + { + static int have_blkpg = -1; +@@ -2919,15 +2947,19 @@ linux_disk_commit (PedDisk* disk) + return _dm_reread_part_table (disk); + #endif + if (disk->dev->type != PED_DEVICE_FILE) { +- +- /* We now require BLKPG support. If this assertion fails, +- please write to the mailing list describing your system. +- Assuming it's never triggered, ... +- FIXME: remove this assertion in 2012. */ +- assert (_have_blkpg ()); +- +- if (!_disk_sync_part_table (disk)) +- return 0; ++ /* The ioctl() command BLKPG_ADD_PARTITION does not notify ++ * the devfs system; consequently, /proc/partitions will not ++ * be up to date, and the proper links in /dev are not ++ * created. Therefore, if using DevFS, we must get the kernel ++ * to re-read and grok the partition table. ++ */ ++ /* Work around kernel dasd problem so we really do BLKRRPART */ ++ if (disk->dev->type == PED_DEVICE_DASD) ++ return _kernel_reread_part_table(disk->dev); ++ ++ assert(_have_blkpg()); ++ if (!_disk_sync_part_table(disk)) ++ return 0; + } + + return 1; diff --git a/parted.changes b/parted.changes index 5403741..1bee6a6 100644 --- a/parted.changes +++ b/parted.changes @@ -1,4 +1,13 @@ ------------------------------------------------------------------- +Mon Feb 17 13:32:19 UTC 2014 - puzel@suse.com + +- Fixup last commit - call BLKRRPART only for DASDs +- added patches: + * libparted-use-BLKRRPART-for-DASD.patch.patch +- removed patches: + * revert-libparted-remove-now-worse-than-useless-_kern.patch + * revert-linux-remove-DASD-restriction-on-_disk_sync_p.patch +------------------------------------------------------------------- Fri Feb 14 08:30:06 UTC 2014 - puzel@suse.com - Use BLKRRPART on DASD disks (instead of BLKPG_*) (bnc#862139) diff --git a/parted.spec b/parted.spec index fa8604b..2206f68 100644 --- a/parted.spec +++ b/parted.spec @@ -58,8 +58,7 @@ Patch27: parted-GPT-add-support-for-PReP-GUID.patch Patch28: parted-resize-command.patch Patch29: libparted-dasd-do-not-use-first-tracks.patch Patch30: libparted-initialize-dasd-part-type.patch -Patch31: revert-linux-remove-DASD-restriction-on-_disk_sync_p.patch -Patch32: revert-libparted-remove-now-worse-than-useless-_kern.patch +Patch31: libparted-use-BLKRRPART-for-DASD.patch.patch Patch100: parted-fatresize-autoconf.patch Requires: /sbin/udevadm BuildRequires: check-devel @@ -139,7 +138,6 @@ to develop applications that require these. %patch29 -p1 %patch30 -p1 %patch31 -p1 -%patch32 -p1 %patch100 -p1 %build diff --git a/revert-libparted-remove-now-worse-than-useless-_kern.patch b/revert-libparted-remove-now-worse-than-useless-_kern.patch deleted file mode 100644 index 0368c3d..0000000 --- a/revert-libparted-remove-now-worse-than-useless-_kern.patch +++ /dev/null @@ -1,59 +0,0 @@ -From 59627048c1b5b6e6aed9198bb11c397b3ad8cddd Mon Sep 17 00:00:00 2001 -From: Petr Uzel -Date: Fri, 14 Feb 2014 09:18:32 +0100 -Subject: [PATCH] Revert "libparted: remove now-worse-than-useless - _kernel_reread_part_table" - -This reverts commit 1223b9fc07859cb619c80dc057bd05458f9b5669. ---- - libparted/arch/linux.c | 30 ++++++++++++++++++++++++++++++ - 1 file changed, 30 insertions(+) - -Index: parted-3.1/libparted/arch/linux.c -=================================================================== ---- parted-3.1.orig/libparted/arch/linux.c -+++ parted-3.1/libparted/arch/linux.c -@@ -2897,6 +2897,34 @@ _dm_reread_part_table (PedDisk* disk) - #endif - - static int -+_kernel_reread_part_table (PedDevice* dev) -+{ -+ LinuxSpecific* arch_specific = LINUX_SPECIFIC (dev); -+ int retry_count = 9; -+ -+ sync(); -+ while (ioctl (arch_specific->fd, BLKRRPART)) { -+ retry_count--; -+ sync(); -+ if (retry_count == 3) -+ sleep(1); /* Pause to allow system to settle */ -+ -+ if (!retry_count) { -+ ped_exception_throw ( -+ PED_EXCEPTION_WARNING, -+ PED_EXCEPTION_IGNORE, -+ _("WARNING: the kernel failed to re-read the partition " -+ "table on %s (%s). As a result, it may not " -+ "reflect all of your changes until after reboot."), -+ dev->path, strerror (errno)); -+ return 0; -+ } -+ } -+ -+ return 1; -+} -+ -+static int - _have_blkpg () - { - static int have_blkpg = -1; -@@ -2931,6 +2959,8 @@ linux_disk_commit (PedDisk* disk) - ok = 0; - } - -+ if (!_kernel_reread_part_table (disk->dev)) -+ ok = 0; - return ok; - } - diff --git a/revert-linux-remove-DASD-restriction-on-_disk_sync_p.patch b/revert-linux-remove-DASD-restriction-on-_disk_sync_p.patch deleted file mode 100644 index 3653a8f..0000000 --- a/revert-linux-remove-DASD-restriction-on-_disk_sync_p.patch +++ /dev/null @@ -1,44 +0,0 @@ -From 69cc320d6a8640dd8069e81ac02ee7d50fc1e8cd Mon Sep 17 00:00:00 2001 -From: Petr Uzel -Date: Fri, 14 Feb 2014 09:12:47 +0100 -Subject: [PATCH] Revert "linux: remove DASD restriction on - _disk_sync_part_table" - -This reverts commit 9fa0e1800db5b9f094ae481fd95a51da03f19e95. ---- - libparted/arch/linux.c | 21 +++++++++++++-------- - 1 file changed, 13 insertions(+), 8 deletions(-) - -Index: parted-3.1/libparted/arch/linux.c -=================================================================== ---- parted-3.1.orig/libparted/arch/linux.c -+++ parted-3.1/libparted/arch/linux.c -@@ -2919,15 +2919,20 @@ linux_disk_commit (PedDisk* disk) - return _dm_reread_part_table (disk); - #endif - if (disk->dev->type != PED_DEVICE_FILE) { -+ /* The ioctl() command BLKPG_ADD_PARTITION does not notify -+ * the devfs system; consequently, /proc/partitions will not -+ * be up to date, and the proper links in /dev are not -+ * created. Therefore, if using DevFS, we must get the kernel -+ * to re-read and grok the partition table. -+ */ -+ /* Work around kernel dasd problem so we really do BLKRRPART */ -+ int ok = 1; -+ if (disk->dev->type != PED_DEVICE_DASD && _have_blkpg ()) { -+ if (!_disk_sync_part_table (disk)) -+ ok = 0; -+ } - -- /* We now require BLKPG support. If this assertion fails, -- please write to the mailing list describing your system. -- Assuming it's never triggered, ... -- FIXME: remove this assertion in 2012. */ -- assert (_have_blkpg ()); -- -- if (!_disk_sync_part_table (disk)) -- return 0; -+ return ok; - } - - return 1;