parted/libparted-make-BLKRRPART-more-robust.patch
Marcus Meissner 5631eac2bb Accepting request 760713 from home:anicka:branches:Base:System
- fix crash in do_resizepart
  + parted-fix-end_input-usage.patch: Fix end_input usage in
    do_resizepart 

- update to version 3.3, noteworthy changes:
 - s390: Re-enabled virtio-attached DASD heuristics by using
   HDIO_GETGEO when probing device geometry. Fixes a bug with
   KVM virtio-blk backed by a DASD.
   Parted now recognizes NVMe devices, NVDIMM, and RAM drives.
 - Fix atari disklabel false positives by probing other labels first.
 - Fix resizepart to adjust the end to be -1 sector when using iec
   power of 2 units so that the next partition can start immediately
   following the new end, just like mkpart does.
 - Fix set and disk_set to not crash when there are no flags to set.
 - Fix a udev cookie leak when using resizepart on device-mapper devices.
 - Fix a gettext crash/error sometimes when using localized languages.
 - Fix fat resize to preverve boot code, and thus not render the
   filesystem unreconized by Windows.
 - Fix rescue command: the rescue command often failed to find
   filesystems due to leaving on cylinder alignment.
 - libparted-fs-resize: Prevent crash resizing FAT file systems with very
   deep directories with path names over 512 bytes long.
 - Use 512b sector size when communicating with device-mapper. Fixes
   problems with partitions being created too small on dm devices
   with sector sizes > 5121b
 - Don't crash in the disk_set command when a disk label is not found
 - libparted-fs-resize: Prevent crash resizing FAT16 file systems.
 - libparted-fs-resize: Prevent crash resizing FAT16 file systems.
 - If the user specifies start/end of the partition as cylinders
   and a cylinder has a size which is power of 2, then such address

OBS-URL: https://build.opensuse.org/request/show/760713
OBS-URL: https://build.opensuse.org/package/show/Base:System/parted?expand=0&rev=144
2020-01-12 13:40:37 +00:00

52 lines
1.7 KiB
Diff

From: Petr Uzel <petr.uzel@suse.cz>
Subject: libparted: Make BLKRRPART more robust
Patch-mainline: no, upstream does not use BLKRRPART and leaves DASDs broken
---
libparted/arch/linux.c | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)
Index: parted-3.3/libparted/arch/linux.c
===================================================================
--- parted-3.3.orig/libparted/arch/linux.c
+++ parted-3.3/libparted/arch/linux.c
@@ -39,6 +39,7 @@
#include <sys/stat.h>
#include <sys/types.h>
#include <sys/utsname.h> /* for uname() */
+#include <sys/file.h>
#include <scsi/scsi.h>
#include <assert.h>
#include <sys/sysmacros.h>
@@ -3242,14 +3243,15 @@ static int
_kernel_reread_part_table (PedDevice* dev)
{
LinuxSpecific* arch_specific = LINUX_SPECIFIC (dev);
- int retry_count = 9;
+ int retry_count = 5;
sync();
+ flock(arch_specific->fd, LOCK_EX);
while (ioctl (arch_specific->fd, BLKRRPART)) {
retry_count--;
sync();
- if (retry_count == 3)
- sleep(1); /* Pause to allow system to settle */
+
+ sleep(1); /* Pause to allow system to settle */
if (!retry_count) {
ped_exception_throw (
@@ -3259,10 +3261,12 @@ _kernel_reread_part_table (PedDevice* de
"table on %s (%s). As a result, it may not "
"reflect all of your changes until after reboot."),
dev->path, strerror (errno));
+ flock(arch_specific->fd, LOCK_UN);
return 0;
}
}
+ flock(arch_specific->fd, LOCK_UN);
return 1;
}