diff --git a/0001-fdasd-geometry-handling-updated-from-upstream-s390-t.patch b/0001-fdasd-geometry-handling-updated-from-upstream-s390-t.patch deleted file mode 100644 index f2d591c..0000000 --- a/0001-fdasd-geometry-handling-updated-from-upstream-s390-t.patch +++ /dev/null @@ -1,276 +0,0 @@ -From: Viktor Mihajlovski -Date: Thu, 17 Sep 2015 15:33:28 +0200 -Subject: fdasd: geometry handling updated from upstream s390-tools -References: fate#320525 / bsc#935127 -Patch-mainline: v3.3 -Git-commit: 4d480d980a9b69b432b8d60df3c4397ba8cdc965 - -Remove the necessity for DASD-specific ioctls for partition handling. -This allows to correctly handle DASD-backed virtio block devices. - -Note that this is necessary because virtio is just the transport. -A DASD, even if provided via virtio, still has it's unique -characteristics, which means that only traditional DASD partition -table formats can be used (no MBR, GPT, or similar). - -Use bzero for initialization to make sure all struct members are -properly cleared. Also changed partition list handling code to be -more similar to upstream s390-tools fdasd. - -Further, enhanced error handling capabilities by providing a -return code by fdasd_get_geometry. - -Code is largely backported from s390-tools project. - -Signed-off-by: Viktor Mihajlovski -Acked-by: Stefan Haberland -Signed-off-by: Hendrik Brueckner -Signed-off-by: Brian C. Lane -Acked-by: Sebastian Parschauer ---- - include/parted/fdasd.in.h | 4 +- - libparted/labels/fdasd.c | 166 ++++++++++++++++++++++++++++++++-------------- - 2 files changed, 119 insertions(+), 51 deletions(-) - ---- a/include/parted/fdasd.in.h -+++ b/include/parted/fdasd.in.h -@@ -190,6 +190,8 @@ typedef struct format_data_t { - #define BLKRRPART _IO(0x12,95) - /* get block device sector size */ - #define BLKSSZGET _IO(0x12,104) -+/* device size in bytes (u64 *arg)*/ -+#define BLKGETSIZE64 _IOR(0x12,114,size_t) - /* get device geometry */ - #define HDIO_GETGEO 0x0301 - -@@ -285,7 +287,7 @@ enum fdasd_failure { - - void fdasd_cleanup (fdasd_anchor_t *anchor); - void fdasd_initialize_anchor (fdasd_anchor_t * anc); --void fdasd_get_geometry (const PedDevice *dev, fdasd_anchor_t *anc, int fd); -+int fdasd_get_geometry (const PedDevice *dev, fdasd_anchor_t *anc, int fd); - void fdasd_check_api_version (fdasd_anchor_t *anc, int fd); - int fdasd_check_volume (fdasd_anchor_t *anc, int fd); - int fdasd_write_labels (fdasd_anchor_t *anc, int fd); ---- a/libparted/labels/fdasd.c -+++ b/libparted/labels/fdasd.c -@@ -210,27 +210,7 @@ fdasd_initialize_anchor (fdasd_anchor_t - partition_info_t *p = NULL; - partition_info_t *q = NULL; - -- anc->devno = 0; -- anc->dev_type = 0; -- anc->used_partitions = 0; -- -- anc->silent = 0; -- anc->verbose = 0; -- anc->big_disk = 0; -- anc->volid_specified = 0; -- anc->config_specified = 0; -- anc->auto_partition = 0; -- anc->devname_specified = 0; -- anc->print_table = 0; -- -- anc->option_reuse = 0; -- anc->option_recreate = 0; -- -- anc->vlabel_changed = 0; -- anc->vtoc_changed = 0; -- anc->blksize = 0; -- anc->fspace_trk = 0; -- anc->label_pos = 0; -+ bzero(anc, sizeof(fdasd_anchor_t)); - - for (i=0; iused = 0x00; -- p->len_trk = 0; -- p->start_trk = 0; -- p->fspace_trk = 0; -- p->type = 0; -+ bzero(p, sizeof(partition_info_t)); - - /* add p to double pointered list */ - if (i == 1) { -- anc->first = p; -- p->prev = NULL; -+ anc->first = p; - } else if (i == USABLE_PARTITIONS) { -- anc->last = p; -- p->next = NULL; -+ anc->last = p; - p->prev = q; - q->next = p; - } else { -- p->prev = q; -- q->next = p; -+ p->prev = q; -+ q->next = p; - } - - p->f1 = malloc(sizeof(format1_label_t)); -@@ -947,15 +921,77 @@ fdasd_check_api_version (fdasd_anchor_t - } - - /* -+ * The following two functions match those in the DASD ECKD device driver. -+ * They are used to compute how many records of a given size can be stored -+ * in one track. -+ */ -+static unsigned int ceil_quot(unsigned int d1, unsigned int d2) -+{ -+ return (d1 + (d2 - 1)) / d2; -+} -+ -+/* kl: key length, dl: data length */ -+static unsigned int recs_per_track(unsigned short dev_type, unsigned int kl, -+ unsigned int dl) -+{ -+ unsigned int dn, kn; -+ -+ switch (dev_type) { -+ case DASD_3380_TYPE: -+ if (kl) -+ return 1499 / (15 + 7 + ceil_quot(kl + 12, 32) + -+ ceil_quot(dl + 12, 32)); -+ else -+ return 1499 / (15 + ceil_quot(dl + 12, 32)); -+ case DASD_3390_TYPE: -+ dn = ceil_quot(dl + 6, 232) + 1; -+ if (kl) { -+ kn = ceil_quot(kl + 6, 232) + 1; -+ return 1729 / (10 + 9 + ceil_quot(kl + 6 * kn, 34) + -+ 9 + ceil_quot(dl + 6 * dn, 34)); -+ } else -+ return 1729 / (10 + 9 + ceil_quot(dl + 6 * dn, 34)); -+ case DASD_9345_TYPE: -+ dn = ceil_quot(dl + 6, 232) + 1; -+ if (kl) { -+ kn = ceil_quot(kl + 6, 232) + 1; -+ return 1420 / (18 + 7 + ceil_quot(kl + 6 * kn, 34) + -+ ceil_quot(dl + 6 * dn, 34)); -+ } else -+ return 1420 / (18 + 7 + ceil_quot(dl + 6 * dn, 34)); -+ } -+ return 0; -+} -+ -+/* -+ * Verify that number of tracks (heads) per cylinder and number of -+ * sectors per track match the expected values for a given device type -+ * and block size. -+ * Returns 1 for a valid match and 0 otherwise. -+ */ -+static int fdasd_verify_geometry(unsigned short dev_type, int blksize, -+ struct fdasd_hd_geometry *geometry) -+{ -+ unsigned int expected_sectors; -+ if (geometry->heads != 15) -+ return 0; -+ expected_sectors = recs_per_track(dev_type, 0, blksize); -+ if (geometry->sectors == expected_sectors) -+ return 1; -+ return 0; -+} -+ -+/* - * reads dasd geometry data - */ --void -+int - fdasd_get_geometry (const PedDevice *dev, fdasd_anchor_t *anc, int f) - { - PDEBUG - int blksize = 0; - dasd_information_t dasd_info; - struct dasd_eckd_characteristics *characteristics; -+ unsigned long long size_in_bytes; - - /* We can't get geometry from a regular file, - so simulate something usable, for the sake of testing. */ -@@ -979,6 +1015,12 @@ fdasd_get_geometry (const PedDevice *dev - anc->geo.heads; - anc->is_file = 1; - } else { -+ if (ioctl(f, BLKGETSIZE64, &size_in_bytes) != 0) { -+ fdasd_error(anc, unable_to_ioctl, -+ _("Could not retrieve disk size.")); -+ goto error; -+ } -+ - if (ioctl(f, HDIO_GETGEO, &anc->geo) != 0) - fdasd_error(anc, unable_to_ioctl, - _("Could not retrieve disk geometry information.")); -@@ -988,27 +1030,51 @@ fdasd_get_geometry (const PedDevice *dev - _("Could not retrieve blocksize information.")); - - /* get disk type */ -- if (ioctl(f, BIODASDINFO, &dasd_info) != 0) -- fdasd_error(anc, unable_to_ioctl, -- _("Could not retrieve disk information.")); -- -- characteristics = (struct dasd_eckd_characteristics *) -- &dasd_info.characteristics; -- if (characteristics->no_cyl == LV_COMPAT_CYL && -- characteristics->long_no_cyl) -- anc->hw_cylinders = characteristics->long_no_cyl; -- else -- anc->hw_cylinders = characteristics->no_cyl; -+ if (ioctl(f, BIODASDINFO, &dasd_info) != 0) { -+ /* verify that the geometry matches a 3390 DASD */ -+ if (!fdasd_verify_geometry(DASD_3390_TYPE, blksize, -+ &anc->geo)) { -+ fdasd_error(anc, wrong_disk_type, -+ _("Disk geometry does not match a " \ -+ "DASD device of type 3390.")); -+ goto error; -+ } -+ anc->dev_type = DASD_3390_TYPE; -+ anc->hw_cylinders = -+ size_in_bytes / (blksize * anc->geo.heads * anc->geo.sectors); -+ /* The VOL1 label on a CDL formatted ECKD DASD is in block 2 -+ * It will be verified later, if this position actually holds a -+ * valid label record. -+ */ -+ anc->label_pos = 2 * blksize; -+ /* A devno 0 is actually a valid devno, which could exist -+ * in the system. Since we use this number only to create -+ * a default volume serial, there is no serious conflict. -+ */ -+ anc->devno = 0; -+ } else { -+ characteristics = (struct dasd_eckd_characteristics *) -+ &dasd_info.characteristics; -+ if (characteristics->no_cyl == LV_COMPAT_CYL && -+ characteristics->long_no_cyl) -+ anc->hw_cylinders = characteristics->long_no_cyl; -+ else -+ anc->hw_cylinders = characteristics->no_cyl; -+ anc->dev_type = dasd_info.dev_type; -+ anc->label_pos = dasd_info.label_block * blksize; -+ anc->devno = dasd_info.devno; -+ anc->label_block = dasd_info.label_block; -+ anc->FBA_layout = dasd_info.FBA_layout; -+ } - - anc->is_file = 0; - } - -- anc->dev_type = dasd_info.dev_type; -- anc->blksize = blksize; -- anc->label_pos = dasd_info.label_block * blksize; -- anc->devno = dasd_info.devno; -- anc->label_block = dasd_info.label_block; -- anc->FBA_layout = dasd_info.FBA_layout; -+ anc->blksize = blksize; -+ return 1; -+ -+ error: -+ return 0; - } - - /* diff --git a/0002-dasd-enhance-device-probing.patch b/0002-dasd-enhance-device-probing.patch deleted file mode 100644 index f1c2a2d..0000000 --- a/0002-dasd-enhance-device-probing.patch +++ /dev/null @@ -1,213 +0,0 @@ -From: Viktor Mihajlovski -Date: Thu, 17 Sep 2015 15:33:29 +0200 -Subject: dasd: enhance device probing -References: fate#320525 / bsc#935127 -Patch-mainline: v3.3 -Git-commit: 834713b5aee1edc004f863231dd489ee3a79f536 - -Probe for all device/transport types as every block device -could be a DASD on s390. - -Since the calculation of the minimum and optimum alignment -is different between DASDs and common fixed block disks -we need a means other than dev->type == PED_DEVICE_DASD. -For that purpose a static function _ped_device_like_dasd() -offering a DASD detection heuristic has been added to -arch/linux.c. - -By always providing arch-specific alignment functions the -need for DASD-specific code could be removed from device.c. - -Observe fdasd_get_geometry return code for proper error -handling. - -Remove the obsolete API check as we no longer require the -DASD-specific IOCTLs. - -Signed-off-by: Viktor Mihajlovski -Acked-by: Stefan Haberland -Signed-off-by: Hendrik Brueckner -Signed-off-by: Brian C. Lane -Acked-by: Sebastian Parschauer ---- - libparted/arch/linux.c | 72 ++++++++++++++++++++++++++++++++++++++++++------ - libparted/device.c | 14 ++------- - libparted/labels/dasd.c | 18 +++++------- - 3 files changed, 76 insertions(+), 28 deletions(-) - ---- a/libparted/arch/linux.c -+++ b/libparted/arch/linux.c -@@ -814,9 +814,13 @@ _device_set_sector_size (PedDevice* dev) - #endif - - #if defined __s390__ || defined __s390x__ -+ /* The real_sector_size is currently needed for DASD layouts, -+ * so we set it unconditionally. In the long run it should -+ * be considered to use the dev->phys_sector_size in label/dasd.c. -+ */ -+ arch_specific->real_sector_size = dev->sector_size; - /* Return PED_SECTOR_SIZE_DEFAULT for DASDs. */ - if (dev->type == PED_DEVICE_DASD) { -- arch_specific->real_sector_size = dev->sector_size; - dev->sector_size = PED_SECTOR_SIZE_DEFAULT; - } - #endif -@@ -3259,6 +3263,60 @@ linux_disk_commit (PedDisk* disk) - return 1; - } - -+#if defined __s390__ || defined __s390x__ -+/** -+ * Check whether this device could be a DASD -+ * -+ * The device probing yields PED_DEVICE_DASD for native DASD transport -+ * If the block device uses a different transport (e.g. virtio) -+ * a simplified heuristic (assuming a model 3390 with 4K sectors) -+ * is applied (only) on s390x systems for this check. -+ * -+ * \return 1 if the geometry indicates this could be a DASD -+ * and 0 otherwise -+ */ -+static int -+_ped_device_like_dasd(const PedDevice *dev) -+{ -+ return (dev->type == PED_DEVICE_DASD) -+ || (dev->hw_geom.heads == 15 -+ && dev->hw_geom.sectors == 12 -+ && (dev->hw_geom.cylinders -+ * dev->hw_geom.heads -+ * dev->hw_geom.sectors -+ * dev->phys_sector_size -+ == dev->length * dev->sector_size)); -+} -+ -+ -+ -+static PedAlignment* -+s390_get_minimum_alignment(const PedDevice *dev) -+{ -+#if USE_BLKID -+ return linux_get_minimum_alignment(dev); -+#else -+ return ped_alignment_new(0, -+ dev->phys_sector_size -+ / dev->sector_size); -+#endif -+} -+ -+static PedAlignment* -+s390_get_optimum_alignment(const PedDevice *dev) -+{ -+ /* DASD needs to use minimum alignment */ -+ if (_ped_device_like_dasd(dev)) -+ return s390_get_minimum_alignment(dev); -+#if USE_BLKID -+ return linux_get_optimum_alignment(dev); -+#else -+ return NULL; -+#endif -+} -+#endif -+ -+ - #if USE_BLKID - static PedAlignment* - linux_get_minimum_alignment(const PedDevice *dev) -@@ -3299,15 +3357,10 @@ linux_get_optimum_alignment(const PedDev - && PED_DEFAULT_ALIGNMENT % optimal_io == 0) - || (!optimal_io && minimum_io - && PED_DEFAULT_ALIGNMENT % minimum_io == 0) -- ) { -- /* DASD needs to use minimum alignment */ -- if (dev->type == PED_DEVICE_DASD) -- return linux_get_minimum_alignment(dev); -- -+ ) - return ped_alignment_new( - blkid_topology_get_alignment_offset(tp) / dev->sector_size, - PED_DEFAULT_ALIGNMENT / dev->sector_size); -- } - - /* If optimal_io_size is 0 and we don't meet the other criteria - for using the device.c default, return the minimum alignment. */ -@@ -3372,7 +3425,10 @@ static PedDeviceArchOps linux_dev_ops = - sync: linux_sync, - sync_fast: linux_sync_fast, - probe_all: linux_probe_all, --#if USE_BLKID -+#if defined __s390__ || defined __s390x__ -+ get_minimum_alignment: s390_get_minimum_alignment, -+ get_optimum_alignment: s390_get_optimum_alignment, -+#elif USE_BLKID - get_minimum_alignment: linux_get_minimum_alignment, - get_optimum_alignment: linux_get_optimum_alignment, - #endif ---- a/libparted/device.c -+++ b/libparted/device.c -@@ -550,16 +550,10 @@ ped_device_get_optimum_alignment(const P - /* If the arch specific code could not give as an alignment - return a default value based on the type of device. */ - if (align == NULL) { -- switch (dev->type) { -- case PED_DEVICE_DASD: -- align = ped_device_get_minimum_alignment(dev); -- break; -- default: -- /* Align to a grain of 1MiB (like vista / win7) */ -- align = ped_alignment_new(0, -- (PED_DEFAULT_ALIGNMENT -- / dev->sector_size)); -- } -+ /* Align to a grain of 1MiB (like vista / win7) */ -+ align = ped_alignment_new(0, -+ (PED_DEFAULT_ALIGNMENT -+ / dev->sector_size)); - } - - return align; ---- a/libparted/labels/dasd.c -+++ b/libparted/labels/dasd.c -@@ -224,19 +224,13 @@ dasd_probe (const PedDevice *dev) - - PED_ASSERT(dev != NULL); - -- if (!(dev->type == PED_DEVICE_DASD -- || dev->type == PED_DEVICE_VIODASD -- || dev->type == PED_DEVICE_FILE)) -- return 0; -- - arch_specific = LINUX_SPECIFIC(dev); - - /* add partition test here */ - fdasd_initialize_anchor(&anchor); - -- fdasd_get_geometry(dev, &anchor, arch_specific->fd); -- -- fdasd_check_api_version(&anchor, arch_specific->fd); -+ if (fdasd_get_geometry(dev, &anchor, arch_specific->fd) == 0) -+ goto error_cleanup; - - /* Labels are required on CDL formatted DASDs. */ - if (fdasd_check_volume(&anchor, arch_specific->fd) && -@@ -286,7 +280,9 @@ dasd_read (PedDisk* disk) - - fdasd_initialize_anchor(&anchor); - -- fdasd_get_geometry(disk->dev, &anchor, arch_specific->fd); -+ if (fdasd_get_geometry(disk->dev, &anchor, arch_specific->fd) == 0) -+ goto error_close_dev; -+ - disk_specific->label_block = anchor.label_block; - - if ((anchor.geo.cylinders * anchor.geo.heads) > BIG_DISK_SIZE) -@@ -645,7 +641,9 @@ dasd_write (const PedDisk* disk) - - /* initialize the anchor */ - fdasd_initialize_anchor(&anchor); -- fdasd_get_geometry(disk->dev, &anchor, arch_specific->fd); -+ if (fdasd_get_geometry(disk->dev, &anchor, arch_specific->fd) == 0) -+ goto error; -+ - fdasd_check_volume(&anchor, arch_specific->fd); - memcpy(anchor.vlabel, &disk_specific->vlabel, sizeof(volume_label_t)); - anchor.vlabel_changed++; diff --git a/0003-parted-fix-build-error-on-s390.patch b/0003-parted-fix-build-error-on-s390.patch deleted file mode 100644 index f5c358e..0000000 --- a/0003-parted-fix-build-error-on-s390.patch +++ /dev/null @@ -1,142 +0,0 @@ -From: Colin Watson -Date: Thu, 29 Oct 2015 21:12:01 +0100 -Subject: parted: fix build error on s390 -References: fate#320525 / bsc#935127 -Patch-mainline: v3.3 -Git-commit: 388bab890a4e09b09d2428c0e773ed083295f91b - -The preceding dasd probing patches have introduced a compile error -when building with blkid support. Fixed by reordering function -definitions. - -Signed-off-by: Colin Watson -Signed-off-by: Viktor Mihajlovski -Signed-off-by: Brian C. Lane -Acked-by: Sebastian Parschauer ---- - libparted/arch/linux.c | 107 ++++++++++++++++++++++++------------------------- - 1 file changed, 54 insertions(+), 53 deletions(-) - ---- a/libparted/arch/linux.c -+++ b/libparted/arch/linux.c -@@ -3263,59 +3263,6 @@ linux_disk_commit (PedDisk* disk) - return 1; - } - --#if defined __s390__ || defined __s390x__ --/** -- * Check whether this device could be a DASD -- * -- * The device probing yields PED_DEVICE_DASD for native DASD transport -- * If the block device uses a different transport (e.g. virtio) -- * a simplified heuristic (assuming a model 3390 with 4K sectors) -- * is applied (only) on s390x systems for this check. -- * -- * \return 1 if the geometry indicates this could be a DASD -- * and 0 otherwise -- */ --static int --_ped_device_like_dasd(const PedDevice *dev) --{ -- return (dev->type == PED_DEVICE_DASD) -- || (dev->hw_geom.heads == 15 -- && dev->hw_geom.sectors == 12 -- && (dev->hw_geom.cylinders -- * dev->hw_geom.heads -- * dev->hw_geom.sectors -- * dev->phys_sector_size -- == dev->length * dev->sector_size)); --} -- -- -- --static PedAlignment* --s390_get_minimum_alignment(const PedDevice *dev) --{ --#if USE_BLKID -- return linux_get_minimum_alignment(dev); --#else -- return ped_alignment_new(0, -- dev->phys_sector_size -- / dev->sector_size); --#endif --} -- --static PedAlignment* --s390_get_optimum_alignment(const PedDevice *dev) --{ -- /* DASD needs to use minimum alignment */ -- if (_ped_device_like_dasd(dev)) -- return s390_get_minimum_alignment(dev); --#if USE_BLKID -- return linux_get_optimum_alignment(dev); --#else -- return NULL; --#endif --} --#endif -- - - #if USE_BLKID - static PedAlignment* -@@ -3411,6 +3358,60 @@ error: - } - #endif - -+#if defined __s390__ || defined __s390x__ -+/** -+ * Check whether this device could be a DASD -+ * -+ * The device probing yields PED_DEVICE_DASD for native DASD transport -+ * If the block device uses a different transport (e.g. virtio) -+ * a simplified heuristic (assuming a model 3390 with 4K sectors) -+ * is applied (only) on s390x systems for this check. -+ * -+ * \return 1 if the geometry indicates this could be a DASD -+ * and 0 otherwise -+ */ -+static int -+_ped_device_like_dasd(const PedDevice *dev) -+{ -+ return (dev->type == PED_DEVICE_DASD) -+ || (dev->hw_geom.heads == 15 -+ && dev->hw_geom.sectors == 12 -+ && (dev->hw_geom.cylinders -+ * dev->hw_geom.heads -+ * dev->hw_geom.sectors -+ * dev->phys_sector_size -+ == dev->length * dev->sector_size)); -+} -+ -+ -+ -+static PedAlignment* -+s390_get_minimum_alignment(const PedDevice *dev) -+{ -+#if USE_BLKID -+ return linux_get_minimum_alignment(dev); -+#else -+ return ped_alignment_new(0, -+ dev->phys_sector_size -+ / dev->sector_size); -+#endif -+} -+ -+static PedAlignment* -+s390_get_optimum_alignment(const PedDevice *dev) -+{ -+ /* DASD needs to use minimum alignment */ -+ if (_ped_device_like_dasd(dev)) -+ return s390_get_minimum_alignment(dev); -+#if USE_BLKID -+ return linux_get_optimum_alignment(dev); -+#else -+ return NULL; -+#endif -+} -+#endif -+ -+ - static PedDeviceArchOps linux_dev_ops = { - _new: linux_new, - destroy: linux_destroy, diff --git a/0004-fdasd.c-Safeguard-against-geometry-misprobing.patch b/0004-fdasd.c-Safeguard-against-geometry-misprobing.patch deleted file mode 100644 index dda7b43..0000000 --- a/0004-fdasd.c-Safeguard-against-geometry-misprobing.patch +++ /dev/null @@ -1,46 +0,0 @@ -From: Viktor Mihajlovski -Date: Fri, 5 Feb 2016 14:47:11 +0100 -Subject: fdasd.c: Safeguard against geometry misprobing -References: fate#320525 / bsc#935127 -Patch-mainline: v3.3 -Git-commit: 8c6de55e4375bd63ae0d0dc7dd7104a7c2290cac - -Fixes an issue with parted print being run against a logical -volume realised by extents on a physical volume residing on -a DASD. -We must make sure that geometry, device blocksize and DASD -attributes are present before we start format verifications -If any of it is missing this is not a DASD. - -Signed-off-by: Viktor Mihajlovski -Signed-off-by: Brian C. Lane -Acked-by: Sebastian Parschauer ---- - libparted/labels/fdasd.c | 11 +++++++++-- - 1 file changed, 9 insertions(+), 2 deletions(-) - ---- a/libparted/labels/fdasd.c -+++ b/libparted/labels/fdasd.c -@@ -1021,13 +1021,20 @@ fdasd_get_geometry (const PedDevice *dev - goto error; - } - -- if (ioctl(f, HDIO_GETGEO, &anc->geo) != 0) -+ if (ioctl(f, HDIO_GETGEO, &anc->geo) != 0 || -+ anc->geo.heads == 0 || -+ anc->geo.sectors == 0 || -+ anc->geo.cylinders == 0 ) { - fdasd_error(anc, unable_to_ioctl, - _("Could not retrieve disk geometry information.")); -+ goto error; -+ } - -- if (ioctl(f, BLKSSZGET, &blksize) != 0) -+ if (ioctl(f, BLKSSZGET, &blksize) != 0) { - fdasd_error(anc, unable_to_ioctl, - _("Could not retrieve blocksize information.")); -+ goto error; -+ } - - /* get disk type */ - if (ioctl(f, BIODASDINFO, &dasd_info) != 0) { diff --git a/0005-libparted-Remove-fdasd-geometry-code-from-alloc_meta.patch b/0005-libparted-Remove-fdasd-geometry-code-from-alloc_meta.patch deleted file mode 100644 index daf8b3a..0000000 --- a/0005-libparted-Remove-fdasd-geometry-code-from-alloc_meta.patch +++ /dev/null @@ -1,46 +0,0 @@ -From: "Brian C. Lane" -Date: Mon, 11 Apr 2016 15:10:51 -0700 -Subject: libparted: Remove fdasd geometry code from alloc_metadata - (#1244833) -References: fate#320525 / bsc#935127 -Patch-mainline: v3.3 -Git-commit: c58f816ffbc0bc4eacfb57d492cbe3b7497ede9f - -commit db20944f changed how the trailing_metadata_end is calculated in -dasd_alloc_metadata, removing the need for setting up the anchor struct. -But dasd_alloc_metadata can be called in various contexts, and the -arch_specific->fd may or may not be valid during these calls. This can -result in unpredictable crashes when it uses a stale fd and tries to run -the file image code in fdasd_get_geometry instead of the device code. - -The solution is to just drop the unneeded code, and to remember that -arch_specific->fd should only be used when ped_device_open has first -been called. - -Resolves: rhbz#1244833 -Acked-by: Sebastian Parschauer ---- - libparted/labels/dasd.c | 4 ---- - 1 file changed, 4 deletions(-) - ---- a/libparted/labels/dasd.c -+++ b/libparted/labels/dasd.c -@@ -998,7 +998,6 @@ dasd_alloc_metadata (PedDisk* disk) - PedPartition* part = NULL; /* initialize solely to placate gcc */ - PedPartition* new_part2; - PedSector trailing_meta_start, trailing_meta_end; -- struct fdasd_anchor anchor; - - PED_ASSERT (disk != NULL); - PED_ASSERT (disk->dev != NULL); -@@ -1048,10 +1047,7 @@ dasd_alloc_metadata (PedDisk* disk) - backed up, then restored to a larger size disk, etc. - */ - trailing_meta_start = part->geom.end + 1; -- fdasd_initialize_anchor(&anchor); -- fdasd_get_geometry(disk->dev, &anchor, arch_specific->fd); - trailing_meta_end = (long long) disk->dev->length - 1; -- fdasd_cleanup(&anchor); - if (trailing_meta_end >= trailing_meta_start) { - new_part2 = ped_partition_new (disk,PED_PARTITION_METADATA, - NULL, trailing_meta_start, trailing_meta_end); diff --git a/clean-the-disk-information-when-commands-fail-in-int.patch b/clean-the-disk-information-when-commands-fail-in-int.patch deleted file mode 100644 index 4177762..0000000 --- a/clean-the-disk-information-when-commands-fail-in-int.patch +++ /dev/null @@ -1,83 +0,0 @@ -From 5a61f15b7003cba73e6517ac22204bafd9a3cb8e Mon Sep 17 00:00:00 2001 -From: Wang Dong -Date: Fri, 23 Dec 2016 06:53:38 +0100 -Subject: [PATCH] clean the disk information when commands fail in interactive - mode. - -parted always reads disk information to memory before any -operations. The disk that user operates is actually -a copy of real one in memory. When the information in memory -is changed, it will commit the memory to device to update the -disk information. - -Once the disk information is read, parted will never re-read it -again unless another device is loaded or the device is re-read. -Above work has been done in commit 7eac058 (parted: don't reload -partition table on every command) - -Each command of parted always commits the memory when it succeeds. -Then the disk information on device and in memory are the same. -But when it fails, they might be different. User will be confused -by this, and sometimes get undesired result with the contaminated -memory. This memory should be cleaned if some command fails. -Then the command followed will re-read the disk. - -Signed-off-by: Wang Dong -Signed-off-by: Hendrik Brueckner ---- - parted/parted.c | 14 ++++++++++---- - parted/ui.c | 8 +++++++- - 2 files changed, 17 insertions(+), 5 deletions(-) - -Index: parted-3.2/parted/parted.c -=================================================================== ---- parted-3.2.orig/parted/parted.c -+++ parted-3.2/parted/parted.c -@@ -1501,8 +1501,12 @@ _rescue_add_partition (PedPartition* par - default: break; - } - -- ped_partition_set_system (part, fs_type); -- ped_disk_commit (part->disk); -+ if (!ped_partition_set_system (part, fs_type)) -+ return 0; -+ -+ if (!ped_disk_commit (part->disk)) -+ return 0; -+ - return 1; - } - -@@ -1727,8 +1731,10 @@ do_rm (PedDevice** dev, PedDisk** diskp) - if (!_partition_warn_busy (part, danger_if_busy)) - goto error; - -- ped_disk_delete_partition (*diskp, part); -- ped_disk_commit (*diskp); -+ if (!ped_disk_delete_partition (*diskp, part)) -+ goto error; -+ if (!ped_disk_commit (*diskp)) -+ goto error; - - if ((*dev)->type != PED_DEVICE_FILE) - disk_is_modified = 1; -Index: parted-3.2/parted/ui.c -=================================================================== ---- parted-3.2.orig/parted/ui.c -+++ parted-3.2/parted/ui.c -@@ -1614,8 +1614,14 @@ interactive_mode (PedDevice** dev, PedDi - cmd = command_get (commands, word); - free (word); - if (cmd) { -- if (!command_run (cmd, dev, disk)) -+ if (!command_run (cmd, dev, disk)) { - command_line_flush (); -+ -+ if (*disk) { -+ ped_disk_destroy (*disk); -+ *disk = 0; -+ } -+ } - } else - print_commands_help (); - } diff --git a/dummy-bootcode-only-for-x86.patch b/dummy-bootcode-only-for-x86.patch index 633c589..484c10b 100644 --- a/dummy-bootcode-only-for-x86.patch +++ b/dummy-bootcode-only-for-x86.patch @@ -5,11 +5,11 @@ Patch-mainline: no, custom SUSE patch libparted/labels/dos.c | 7 +++++++ 1 file changed, 7 insertions(+) -Index: parted-3.2/libparted/labels/dos.c +Index: parted-3.3/libparted/labels/dos.c =================================================================== ---- parted-3.2.orig/libparted/labels/dos.c -+++ parted-3.2/libparted/labels/dos.c -@@ -1285,6 +1285,12 @@ msdos_write (const PedDisk* disk) +--- parted-3.3.orig/libparted/labels/dos.c ++++ parted-3.3/libparted/labels/dos.c +@@ -1287,6 +1287,12 @@ msdos_write (const PedDisk* disk) return 0; DosRawTable *table = (DosRawTable *) s0; @@ -22,7 +22,7 @@ Index: parted-3.2/libparted/labels/dos.c /* either no bootrecord at all, or AIX IPL signature ... */ if ( (!table->boot_code[0]) || ( table->boot_code[0] == (char) 0xc9 && -@@ -1295,6 +1301,7 @@ msdos_write (const PedDisk* disk) +@@ -1297,6 +1303,7 @@ msdos_write (const PedDisk* disk) memset (table->boot_code, 0, 512); memcpy (table->boot_code, MBR_BOOT_CODE, sizeof (MBR_BOOT_CODE)); } diff --git a/hfs_fix.dif b/hfs_fix.dif index 86c217c..6ba17c4 100644 --- a/hfs_fix.dif +++ b/hfs_fix.dif @@ -2,11 +2,11 @@ libparted/labels/mac.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) -Index: parted-3.2/libparted/labels/mac.c +Index: parted-3.3/libparted/labels/mac.c =================================================================== ---- parted-3.2.orig/libparted/labels/mac.c -+++ parted-3.2/libparted/labels/mac.c -@@ -467,7 +467,7 @@ _rawpart_is_void (MacRawPartition* raw_p +--- parted-3.3.orig/libparted/labels/mac.c ++++ parted-3.3/libparted/labels/mac.c +@@ -468,7 +468,7 @@ _rawpart_is_void (MacRawPartition* raw_p return _rawpart_cmp_type (raw_part, "Apple_Void"); } @@ -15,7 +15,7 @@ Index: parted-3.2/libparted/labels/mac.c * doesn't represent a partition at all. NOTE: some people make Apple_Free * partitions with MacOS, because they can't select another type. So, if the * name is anything other than "Extra" or "", it is treated as a "real" -@@ -530,6 +530,13 @@ _rawpart_analyse (MacRawPartition* raw_p +@@ -531,6 +531,13 @@ _rawpart_analyse (MacRawPartition* raw_p if (!part) goto error; diff --git a/lib-fs-resize-prevent-crash-resizing-FAT16.patch b/lib-fs-resize-prevent-crash-resizing-FAT16.patch deleted file mode 100644 index ac39a61..0000000 --- a/lib-fs-resize-prevent-crash-resizing-FAT16.patch +++ /dev/null @@ -1,67 +0,0 @@ -From: Mike Fleetwood -Date: Sun, 28 Sep 2014 16:15:48 +0100 -Subject: lib-fs-resize: Prevent crash resizing FAT16 file systems -Patch-mainline: v3.3 -Git-commit: 1e9e770f4bc7f3d80e09ecd1df58575fad064163 - -Resizing FAT16 file system crashes in libparted/fs/r/fat/resize.c -create_resize_context() because it was dereferencing NULL pointer -fs_info->info_sector to copy the info_sector. - -Only FAT32 file systems have info_sector populated by fat_open() -> -fat_info_sector_read(). FAT12 and FAT16 file systems don't have an -info_sector so pointer fs_info->info_sector remains assigned NULL from -fat_alloc(). When resizing a FAT file system create_resize_context() -was always dereferencing fs_info->info_sector to memory copy the -info_sector, hence it crashed for FAT12 and FAT16. - -Make create_resize_context() only copy the info_sector for FAT32 file -systems. - -Reported by Christian Hesse in -https://bugzilla.gnome.org/show_bug.cgi?id=735669 ---- - NEWS | 4 ++++ - libparted/fs/r/fat/resize.c | 12 +++++++++--- - 2 files changed, 13 insertions(+), 3 deletions(-) - -Index: parted-3.2/NEWS -=================================================================== ---- parted-3.2.orig/NEWS -+++ parted-3.2/NEWS -@@ -160,6 +160,10 @@ GNU parted NEWS - System partitions) or "msftres" (which sets the "Microsoft Reserved" type - code). - -+** Bug Fixes -+ -+ libparted-fs-resize: Prevent crash resizing FAT16 file systems. -+ - - * Noteworthy changes in release 3.1 (2012-03-02) [stable] - -Index: parted-3.2/libparted/fs/r/fat/resize.c -=================================================================== ---- parted-3.2.orig/libparted/fs/r/fat/resize.c -+++ parted-3.2/libparted/fs/r/fat/resize.c -@@ -668,11 +668,17 @@ create_resize_context (PedFileSystem* fs - - /* preserve boot code, etc. */ - new_fs_info->boot_sector = ped_malloc (new_geom->dev->sector_size); -- new_fs_info->info_sector = ped_malloc (new_geom->dev->sector_size); - memcpy (new_fs_info->boot_sector, fs_info->boot_sector, - new_geom->dev->sector_size); -- memcpy (new_fs_info->info_sector, fs_info->info_sector, -- new_geom->dev->sector_size); -+ new_fs_info->info_sector = NULL; -+ if (fs_info->fat_type == FAT_TYPE_FAT32) -+ { -+ PED_ASSERT (fs_info->info_sector != NULL); -+ new_fs_info->info_sector = -+ ped_malloc (new_geom->dev->sector_size); -+ memcpy (new_fs_info->info_sector, fs_info->info_sector, -+ new_geom->dev->sector_size); -+ } - - new_fs_info->logical_sector_size = fs_info->logical_sector_size; - new_fs_info->sector_count = new_geom->length; diff --git a/libpartd-dasd-improve-flag-processing-for-DASD-LDL.patch b/libpartd-dasd-improve-flag-processing-for-DASD-LDL.patch deleted file mode 100644 index 482b437..0000000 --- a/libpartd-dasd-improve-flag-processing-for-DASD-LDL.patch +++ /dev/null @@ -1,44 +0,0 @@ -From 1545d6d4db29fa20f0c611786a094521e8974d4a Mon Sep 17 00:00:00 2001 -From: Wang Dong -Date: Fri, 24 Mar 2017 03:11:12 +0100 -Subject: [PATCH] libpartd/dasd: improve flag processing for DASD-LDL - -DASD-LDL does not support flag now, so all the flags are -unavailable to it. - -Signed-off-by: Andre Wild -Signed-off-by: Wang Dong -Signed-off-by: Hendrik Brueckner ---- - libparted/labels/dasd.c | 14 ++++++++++++++ - 1 file changed, 14 insertions(+) - -Index: parted-3.2/libparted/labels/dasd.c -=================================================================== ---- parted-3.2.orig/libparted/labels/dasd.c -+++ parted-3.2/libparted/labels/dasd.c -@@ -788,10 +788,24 @@ dasd_partition_get_flag (const PedPartit - } - } - -+/* -+ * The DASD-LDL does not support flags now. -+ * So just return 0. -+*/ - static int - dasd_partition_is_flag_available (const PedPartition* part, - PedPartitionFlag flag) - { -+ DasdDiskSpecific* disk_specific; -+ PED_ASSERT (part != NULL); -+ PED_ASSERT (part->disk != NULL); -+ PED_ASSERT (part->disk->disk_specific != NULL); -+ -+ disk_specific = part->disk->disk_specific; -+ -+ if (disk_specific->format_type == 1) -+ return 0; -+ - switch (flag) { - case PED_PARTITION_SWAP: - return 1; diff --git a/libparted-Add-support-for-NVDIMM-devices.patch b/libparted-Add-support-for-NVDIMM-devices.patch deleted file mode 100644 index 5baa0d4..0000000 --- a/libparted-Add-support-for-NVDIMM-devices.patch +++ /dev/null @@ -1,75 +0,0 @@ -From: Sebastian Parschauer -Date: Mon, 23 Oct 2017 17:47:47 +0200 -Subject: Add support for NVDIMM devices -References: bsc#1064446 -Patch-mainline: v3.3 -Git-commit: 71885c5f493f3a5d950adbb3e8d17eff7e023053 - -Recognize NVDIMM devices, so that "parted -s /dev/pmem7 p" now -prints "Model: NVDIMM Device (pmem)" instead of -"Model: Unknown (unknown)". - -In order for a device to be recognized as NVDIMM, it has to -have a 'blkext' major number. But since this major can be -used also by other device types, we also check that the device -path contains 'pmem' as a substring. - -* include/parted/device.h.in(PedDeviceType): Add PED_DEVICE_PMEM -* libparted/arch/linux.c(_device_probe_type): Recognize NVDIMM devices. -* libparted/arch/linux.c(linux_new): Handle NVDIMM devices. -* parted/parted.c(do_print): Add "pmem" to list of transports. - -Signed-off-by: Sebastian Parschauer ---- - include/parted/device.in.h | 3 ++- - libparted/arch/linux.c | 7 +++++++ - parted/parted.c | 3 ++- - 3 files changed, 11 insertions(+), 2 deletions(-) - ---- a/include/parted/device.in.h -+++ b/include/parted/device.in.h -@@ -51,7 +51,8 @@ typedef enum { - PED_DEVICE_MD = 17, - PED_DEVICE_LOOP = 18, - PED_DEVICE_NVME = 19, -- PED_DEVICE_RAM = 20 -+ PED_DEVICE_RAM = 20, -+ PED_DEVICE_PMEM = 21 - } PedDeviceType; - - typedef struct _PedDevice PedDevice; ---- a/libparted/arch/linux.c -+++ b/libparted/arch/linux.c -@@ -724,6 +724,8 @@ _device_probe_type (PedDevice* dev) - dev->type = PED_DEVICE_NVME; - } else if (dev_major == RAM_MAJOR) { - dev->type = PED_DEVICE_RAM; -+ } else if (_is_blkext_major(dev_major) && dev->path && strstr(dev->path, "pmem")) { -+ dev->type = PED_DEVICE_PMEM; - } else { - dev->type = PED_DEVICE_UNKNOWN; - } -@@ -1497,6 +1499,11 @@ linux_new (const char* path) - goto error_free_arch_specific; - break; - -+ case PED_DEVICE_PMEM: -+ if (!init_generic (dev, _("NVDIMM Device"))) -+ goto error_free_arch_specific; -+ break; -+ - case PED_DEVICE_ATARAID: - if (!init_generic (dev, _("ATARAID Controller"))) - goto error_free_arch_specific; ---- a/parted/parted.c -+++ b/parted/parted.c -@@ -1045,7 +1045,8 @@ _print_disk_info (const PedDevice *dev, - "cpqarray", "file", "ataraid", "i2o", - "ubd", "dasd", "viodasd", "sx8", "dm", - "xvd", "sd/mmc", "virtblk", "aoe", -- "md", "loopback", "nvme", "brd"}; -+ "md", "loopback", "nvme", "brd", -+ "pmem"}; - - char* start = ped_unit_format (dev, 0); - PedUnit default_unit = ped_unit_get_default (); diff --git a/libparted-Add-support-for-NVMe-devices.patch b/libparted-Add-support-for-NVMe-devices.patch deleted file mode 100644 index 8ccac3b..0000000 --- a/libparted-Add-support-for-NVMe-devices.patch +++ /dev/null @@ -1,101 +0,0 @@ -From: Petr Uzel -Date: Tue, 14 Jun 2016 10:41:18 +0200 -Subject: Add support for NVMe devices -References: bsc#982169 -Patch-mainline: v3.3 -Git-commit: e4ae4330f3e33201aeeed3b7ca88e15d98d03e13 - -Recognize NVMe Devices, so "parted -s /dev/nvme0n1" now prints -"NVMe Device (nvme)" instead of "Model: Unknown (unknown)". - -In order for a device to be recognized as NVMe, it has to -have a 'blkext' major number. But since this major can be -used also by other device types, we also check the device -path contains 'nvme' as a substring. - -* NEWS: Mention the change -* include/parted/device.h.in(PedDeviceType): Add PED_DEVICE_NVME -* libparted/arch/linux.c(BLKEXT_MAJOR): New define. -* libparted/arch/linux.c(_is_blkext_major): New function. -* libparted/arch/linux.c(_device_probe_type): Recognize NVMe devices. -* libparted/arch/linux.c(linux_new): Handle NVMe devices. -* parted/parted.c(do_print): Add "nvme" to list of transports. ---- - include/parted/device.in.h | 3 ++- - libparted/arch/linux.c | 14 ++++++++++++++ - parted/parted.c | 2 +- - 3 files changed, 17 insertions(+), 2 deletions(-) - -Index: parted-3.2/include/parted/device.in.h -=================================================================== ---- parted-3.2.orig/include/parted/device.in.h -+++ parted-3.2/include/parted/device.in.h -@@ -49,7 +49,8 @@ typedef enum { - PED_DEVICE_VIRTBLK = 15, - PED_DEVICE_AOE = 16, - PED_DEVICE_MD = 17, -- PED_DEVICE_LOOP = 18 -+ PED_DEVICE_LOOP = 18, -+ PED_DEVICE_NVME = 19 - } PedDeviceType; - - typedef struct _PedDevice PedDevice; -Index: parted-3.2/libparted/arch/linux.c -=================================================================== ---- parted-3.2.orig/libparted/arch/linux.c -+++ parted-3.2/libparted/arch/linux.c -@@ -279,6 +279,7 @@ struct blkdev_ioctl_param { - #define SDMMC_MAJOR 179 - #define LOOP_MAJOR 7 - #define MD_MAJOR 9 -+#define BLKEXT_MAJOR 259 - - #define SCSI_BLK_MAJOR(M) ( \ - (M) == SCSI_DISK0_MAJOR \ -@@ -461,6 +462,12 @@ _ensure_read_write (PedDevice *dev) - return; - } - -+static int -+_is_blkext_major (int major) -+{ -+ return _major_type_in_devices (major, "blkext"); -+} -+ - #ifdef ENABLE_DEVICE_MAPPER - static int - _dm_task_run_wait (struct dm_task *task, uint32_t cookie) -@@ -712,6 +719,8 @@ _device_probe_type (PedDevice* dev) - dev->type = PED_DEVICE_LOOP; - } else if (dev_major == MD_MAJOR) { - dev->type = PED_DEVICE_MD; -+ } else if (_is_blkext_major(dev_major) && dev->path && strstr(dev->path, "nvme")) { -+ dev->type = PED_DEVICE_NVME; - } else { - dev->type = PED_DEVICE_UNKNOWN; - } -@@ -1471,6 +1480,11 @@ linux_new (const char* path) - goto error_free_arch_specific; - break; - -+ case PED_DEVICE_NVME: -+ if (!init_generic (dev, _("NVMe Device"))) -+ goto error_free_arch_specific; -+ break; -+ - case PED_DEVICE_ATARAID: - if (!init_generic (dev, _("ATARAID Controller"))) - goto error_free_arch_specific; -Index: parted-3.2/parted/parted.c -=================================================================== ---- parted-3.2.orig/parted/parted.c -+++ parted-3.2/parted/parted.c -@@ -1035,7 +1035,7 @@ _print_disk_info (const PedDevice *dev, - "cpqarray", "file", "ataraid", "i2o", - "ubd", "dasd", "viodasd", "sx8", "dm", - "xvd", "sd/mmc", "virtblk", "aoe", -- "md", "loopback"}; -+ "md", "loopback", "nvme"}; - - char* start = ped_unit_format (dev, 0); - PedUnit default_unit = ped_unit_get_default (); diff --git a/libparted-Add-support-for-RAM-drives.patch b/libparted-Add-support-for-RAM-drives.patch deleted file mode 100644 index e92236b..0000000 --- a/libparted-Add-support-for-RAM-drives.patch +++ /dev/null @@ -1,95 +0,0 @@ -From: Sebastian Parschauer -Date: Tue, 14 Mar 2017 16:40:00 +0100 -Subject: Add support for RAM drives -References: bsc#1006834 -Patch-mainline: v3.3 -Git-commit: 21131f62c6f508a5d0c080e025cf7db5df43fc7d - -Recognize RAM drives, so "parted -s /dev/ram0 p" now prints -"RAM Drive (brd)" instead of "Model: Unknown (unknown)". - -In order for a device to be recognized as RAM drive, it has to -have major number 1. Also the BLKFLSBUF ioctl shouldn't be used -on RAM drives as it is used to zero the device. - -* NEWS: Mention the change -* include/parted/device.h.in(PedDeviceType): Add PED_DEVICE_RAM. -* libparted/arch/linux.c(RAM_MAJOR): New define. -* libparted/arch/linux.c(_device_probe_type): Recognize RAM drives. -* libparted/arch/linux.c(linux_new): Handle RAM drives. -* libparted/arch/linux.c(_flush_cache): Skip RAM drives. -* parted/parted.c(do_print): Add "brd" to list of transports. - -Signed-off-by: Sebastian Parschauer ---- - include/parted/device.in.h | 3 ++- - libparted/arch/linux.c | 12 ++++++++++-- - parted/parted.c | 2 +- - 3 files changed, 13 insertions(+), 4 deletions(-) - ---- a/include/parted/device.in.h -+++ b/include/parted/device.in.h -@@ -50,7 +50,8 @@ typedef enum { - PED_DEVICE_AOE = 16, - PED_DEVICE_MD = 17, - PED_DEVICE_LOOP = 18, -- PED_DEVICE_NVME = 19 -+ PED_DEVICE_NVME = 19, -+ PED_DEVICE_RAM = 20 - } PedDeviceType; - - typedef struct _PedDevice PedDevice; ---- a/libparted/arch/linux.c -+++ b/libparted/arch/linux.c -@@ -280,6 +280,7 @@ struct blkdev_ioctl_param { - #define LOOP_MAJOR 7 - #define MD_MAJOR 9 - #define BLKEXT_MAJOR 259 -+#define RAM_MAJOR 1 - - #define SCSI_BLK_MAJOR(M) ( \ - (M) == SCSI_DISK0_MAJOR \ -@@ -721,6 +722,8 @@ _device_probe_type (PedDevice* dev) - dev->type = PED_DEVICE_MD; - } else if (_is_blkext_major(dev_major) && dev->path && strstr(dev->path, "nvme")) { - dev->type = PED_DEVICE_NVME; -+ } else if (dev_major == RAM_MAJOR) { -+ dev->type = PED_DEVICE_RAM; - } else { - dev->type = PED_DEVICE_UNKNOWN; - } -@@ -1553,6 +1556,11 @@ linux_new (const char* path) - goto error_free_arch_specific; - break; - -+ case PED_DEVICE_RAM: -+ if (!init_generic (dev, _("RAM Drive"))) -+ goto error_free_arch_specific; -+ break; -+ - default: - ped_exception_throw (PED_EXCEPTION_NO_FEATURE, - PED_EXCEPTION_CANCEL, -@@ -1625,9 +1633,9 @@ _flush_cache (PedDevice* dev) - { - LinuxSpecific* arch_specific = LINUX_SPECIFIC (dev); - int i; -- int lpn = _device_get_partition_range(dev); -+ int lpn = _device_get_partition_range(dev); - -- if (dev->read_only) -+ if (dev->read_only || dev->type == PED_DEVICE_RAM) - return; - dev->dirty = 0; - ---- a/parted/parted.c -+++ b/parted/parted.c -@@ -1035,7 +1035,7 @@ _print_disk_info (const PedDevice *dev, - "cpqarray", "file", "ataraid", "i2o", - "ubd", "dasd", "viodasd", "sx8", "dm", - "xvd", "sd/mmc", "virtblk", "aoe", -- "md", "loopback", "nvme"}; -+ "md", "loopback", "nvme", "brd"}; - - char* start = ped_unit_format (dev, 0); - PedUnit default_unit = ped_unit_get_default (); diff --git a/libparted-BLKPG_RESIZE_PARTITION-uses-bytes.patch b/libparted-BLKPG_RESIZE_PARTITION-uses-bytes.patch deleted file mode 100644 index 0213a5e..0000000 --- a/libparted-BLKPG_RESIZE_PARTITION-uses-bytes.patch +++ /dev/null @@ -1,30 +0,0 @@ -From: "Brian C. Lane" -Date: Fri, 5 Jun 2015 14:40:00 -0700 -Subject: libparted: BLKPG_RESIZE_PARTITION uses bytes, not sectors -References: bsc#1058667 -Patch-mainline: v3.3 -Git-commit: c6dc6e5d0f49a26242d2b28622514814a53d92e1 - -This results in the extended partition vanishing after adding another -partition. - -Resolves: rhbz#1135493 -Acked-by: Sebastian Parschauer ---- - libparted/arch/linux.c | 5 ++++- - 1 file changed, 4 insertions(+), 1 deletion(-) - ---- a/libparted/arch/linux.c -+++ b/libparted/arch/linux.c -@@ -2640,7 +2640,10 @@ static int _blkpg_resize_partition (PedD - if (walk->geom.start == part->geom.start+1) - linux_part.length = 1; - } -- } else linux_part.length = 1; -+ } else { -+ linux_part.length = 1; -+ } -+ linux_part.length *= disk->dev->sector_size; - } - else - linux_part.length = part->geom.length * disk->dev->sector_size; diff --git a/libparted-Use-read-only-when-probing-devices-on-linu.patch b/libparted-Use-read-only-when-probing-devices-on-linu.patch deleted file mode 100644 index 3df396c..0000000 --- a/libparted-Use-read-only-when-probing-devices-on-linu.patch +++ /dev/null @@ -1,216 +0,0 @@ -From: "Brian C. Lane" -Date: Thu, 6 Aug 2015 07:17:14 -0700 -Subject: libparted: Use read only when probing devices on linux -Patch-mainline: v3.3 -Git-commit: 44d5ae0115c4ecfe3158748309e9912c5aede92d - -When a device is opened for RW closing it can trigger other actions, -like udev scanning it for partition changes. Use read only for the -init_* methods and RW for actual changes to the device. - -This adds _device_open which takes mode flags as an argument and turns -linux_open into a wrapper for it with RW_MODE. - -_device_open_ro is added to open the device with RD_MODE and increment -the open_counter. This is used in the init_* functions. - -_device_close is a wrapper around linux_close that decrements the -open_counter and is used in the init_* functions. - -All of these changes are self-contained with no external API changes. -The only visible change in behavior is that when a new PedDevice is -created the device is opened in RO_MODE instead of RW_MODE. - -Resolves: rhbz#1245144 ---- - libparted/arch/linux.c | 62 ++++++++++++++++++++++++++++++++++--------------- - 1 file changed, 44 insertions(+), 18 deletions(-) - -Index: parted-3.2/libparted/arch/linux.c -=================================================================== ---- parted-3.2.orig/libparted/arch/linux.c -+++ parted-3.2/libparted/arch/linux.c -@@ -292,7 +292,9 @@ struct blkdev_ioctl_param { - static char* _device_get_part_path (PedDevice const *dev, int num); - static int _partition_is_mounted_by_path (const char* path); - static unsigned int _device_get_partition_range(PedDevice const* dev); -- -+static int _device_open (PedDevice* dev, int flags); -+static int _device_open_ro (PedDevice* dev); -+static int _device_close (PedDevice* dev); - - static int - _read_fd (int fd, char **buf) -@@ -911,7 +913,7 @@ init_ide (PedDevice* dev) - if (!_device_stat (dev, &dev_stat)) - goto error; - -- if (!ped_device_open (dev)) -+ if (!_device_open_ro (dev)) - goto error; - - if (ioctl (arch_specific->fd, HDIO_GET_IDENTITY, &hdi)) { -@@ -980,11 +982,11 @@ init_ide (PedDevice* dev) - if (!_device_probe_geometry (dev)) - goto error_close_dev; - -- ped_device_close (dev); -+ _device_close (dev); - return 1; - - error_close_dev: -- ped_device_close (dev); -+ _device_close (dev); - error: - return 0; - } -@@ -1117,7 +1119,7 @@ init_scsi (PedDevice* dev) - char* vendor; - char* product; - -- if (!ped_device_open (dev)) -+ if (!_device_open_ro (dev)) - goto error; - - if (ioctl (arch_specific->fd, SCSI_IOCTL_GET_IDLUN, &idlun) < 0) { -@@ -1131,7 +1133,7 @@ init_scsi (PedDevice* dev) - goto error_close_dev; - if (!_device_probe_geometry (dev)) - goto error_close_dev; -- ped_device_close (dev); -+ _device_close (dev); - return 1; - } - -@@ -1153,11 +1155,11 @@ init_scsi (PedDevice* dev) - if (!_device_probe_geometry (dev)) - goto error_close_dev; - -- ped_device_close (dev); -+ _device_close (dev); - return 1; - - error_close_dev: -- ped_device_close (dev); -+ _device_close (dev); - error: - return 0; - } -@@ -1169,7 +1171,7 @@ init_file (PedDevice* dev) - - if (!_device_stat (dev, &dev_stat)) - goto error; -- if (!ped_device_open (dev)) -+ if (!_device_open_ro (dev)) - goto error; - - dev->sector_size = PED_SECTOR_SIZE_DEFAULT; -@@ -1196,7 +1198,7 @@ init_file (PedDevice* dev) - goto error_close_dev; - } - -- ped_device_close (dev); -+ _device_close (dev); - - dev->bios_geom.cylinders = dev->length / 4 / 32; - dev->bios_geom.heads = 4; -@@ -1207,7 +1209,7 @@ init_file (PedDevice* dev) - return 1; - - error_close_dev: -- ped_device_close (dev); -+ _device_close (dev); - error: - return 0; - } -@@ -1223,7 +1225,7 @@ init_dasd (PedDevice* dev, const char* m - if (!_device_stat (dev, &dev_stat)) - goto error; - -- if (!ped_device_open (dev)) -+ if (!_device_open_ro (dev)) - goto error; - - LinuxSpecific* arch_specific = LINUX_SPECIFIC (dev); -@@ -1263,11 +1265,11 @@ init_dasd (PedDevice* dev, const char* m - - dev->model = strdup (model_name); - -- ped_device_close (dev); -+ _device_close (dev); - return 1; - - error_close_dev: -- ped_device_close (dev); -+ _device_close (dev); - error: - return 0; - } -@@ -1282,7 +1284,7 @@ init_generic (PedDevice* dev, const char - if (!_device_stat (dev, &dev_stat)) - goto error; - -- if (!ped_device_open (dev)) -+ if (!_device_open_ro (dev)) - goto error; - - ped_exception_fetch_all (); -@@ -1330,11 +1332,11 @@ init_generic (PedDevice* dev, const char - - dev->model = strdup (model_name); - -- ped_device_close (dev); -+ _device_close (dev); - return 1; - - error_close_dev: -- ped_device_close (dev); -+ _device_close (dev); - error: - return 0; - } -@@ -1621,12 +1623,27 @@ retry: - } - - static int -+_device_open_ro (PedDevice* dev) -+{ -+ int rc = _device_open (dev, RD_MODE); -+ if (rc) -+ dev->open_count++; -+ return rc; -+} -+ -+static int - linux_open (PedDevice* dev) - { -+ return _device_open (dev, RW_MODE); -+} -+ -+static int -+_device_open (PedDevice* dev, int flags) -+{ - LinuxSpecific* arch_specific = LINUX_SPECIFIC (dev); - - retry: -- arch_specific->fd = open (dev->path, RW_MODE); -+ arch_specific->fd = open (dev->path, flags); - - if (arch_specific->fd == -1) { - char* rw_error_msg = strerror (errno); -@@ -1695,6 +1712,15 @@ linux_refresh_close (PedDevice* dev) - return 1; - } - -+static int -+_device_close (PedDevice* dev) -+{ -+ int rc = linux_close (dev); -+ if (dev->open_count > 0) -+ dev->open_count--; -+ return rc; -+} -+ - #if SIZEOF_OFF_T < 8 - - static _syscall5(int,_llseek, diff --git a/libparted-allow-bigger-snap-radius-if-cylinders-are-used.patch b/libparted-allow-bigger-snap-radius-if-cylinders-are-used.patch deleted file mode 100644 index d1ce438..0000000 --- a/libparted-allow-bigger-snap-radius-if-cylinders-are-used.patch +++ /dev/null @@ -1,42 +0,0 @@ -From: Petr Uzel -Date: Thu, 29 May 2014 14:50:31 +0200 -Subject: libparted: allow bigger snap radius if cylinders are used -References: bnc#879387 -Patch-mainline: no, custom change for flexibility - -This is partial revert of commit - - commit 18e727d492933ae1ebb16961e1df553f9299af8b - Author: Brian C. Lane - Date: Tue Jun 21 10:44:15 2011 -0700 - - libparted: fix snap radius so that it is using half (#665496) - - The snap radius didn't match the documentation, it has been - using +/- unit size instead +/- 0.5 * unit (eg. 500KB for a MB - unit). This caused problems when specifying 1MB, 1GB, etc. as a - partition start or end resulting in partitions being created - that were nowhere near the specified size. - -Only revert to the old behavior if cylinders are used in order to -give parted more flexibility when snapping the partition start/end. ---- - libparted/unit.c | 5 ++++- - 1 file changed, 4 insertions(+), 1 deletion(-) - -Index: parted-3.1/libparted/unit.c -=================================================================== ---- parted-3.1.orig/libparted/unit.c -+++ parted-3.1/libparted/unit.c -@@ -540,7 +540,10 @@ ped_unit_parse_custom (const char* str, - } - - unit_size = ped_unit_get_size (dev, unit); -- radius = (ped_div_round_up (unit_size, dev->sector_size) / 2) - 1; -+ if (unit == PED_UNIT_CYLINDER) -+ radius = ped_div_round_up (unit_size, dev->sector_size) - 1; -+ else -+ radius = (ped_div_round_up (unit_size, dev->sector_size) / 2) - 1; - if (radius < 0) - radius = 0; - /* If the user specifies units in a power of 2, e.g., 4MiB, as in diff --git a/libparted-avoid-libdevice-mapper-warnings.patch b/libparted-avoid-libdevice-mapper-warnings.patch index 6022373..b80f4a0 100644 --- a/libparted-avoid-libdevice-mapper-warnings.patch +++ b/libparted-avoid-libdevice-mapper-warnings.patch @@ -5,11 +5,11 @@ Patch-mainline: no, custom SUSE patch libparted/arch/linux.c | 6 ++++++ 1 file changed, 6 insertions(+) -Index: parted-3.2/libparted/arch/linux.c +Index: parted-3.3/libparted/arch/linux.c =================================================================== ---- parted-3.2.orig/libparted/arch/linux.c -+++ parted-3.2/libparted/arch/linux.c -@@ -2728,6 +2728,12 @@ _dm_remove_partition(PedDisk* disk, int +--- parted-3.3.orig/libparted/arch/linux.c ++++ parted-3.3/libparted/arch/linux.c +@@ -2852,6 +2852,12 @@ _dm_remove_partition(PedDisk* disk, int goto err; } close (fd); diff --git a/libparted-dasd-add-an-exception-for-changing-DASD-LD.patch b/libparted-dasd-add-an-exception-for-changing-DASD-LD.patch deleted file mode 100644 index 2a29552..0000000 --- a/libparted-dasd-add-an-exception-for-changing-DASD-LD.patch +++ /dev/null @@ -1,35 +0,0 @@ -From ee2c0c20fb215af43b12195e8cd645cc1a0bd96e Mon Sep 17 00:00:00 2001 -From: Wang Dong -Date: Fri, 24 Mar 2017 11:20:09 +0100 -Subject: [PATCH] libparted/dasd: add an exception for changing DASD-LDL - partition table - -The partition table of DASD-LDL device with the dasd disk label -should not be changed according to its character in Linux. -When the user tries to modify the partition table, an exception -will be raised to inform user of this character. - -Signed-off-by: Wang Dong -Signed-off-by: Hendrik Brueckner ---- - libparted/labels/dasd.c | 6 +++++- - 1 file changed, 5 insertions(+), 1 deletion(-) - -Index: parted-3.2/libparted/labels/dasd.c -=================================================================== ---- parted-3.2.orig/libparted/labels/dasd.c -+++ parted-3.2/libparted/labels/dasd.c -@@ -617,8 +617,12 @@ dasd_write (const PedDisk* disk) - PDEBUG; - - /* If not formated in CDL, don't write anything. */ -- if (disk_specific->format_type == 1) -+ if (disk_specific->format_type == 1) { -+ ped_exception_throw (PED_EXCEPTION_ERROR, -+ PED_EXCEPTION_CANCEL, -+ _("The partition table of DASD-LDL device cannot be changed.\n")); - return 1; -+ } - - /* Ensure the device is open RW */ - char dummy[10]; /* to avoid assertion in ped_device_write */ diff --git a/libparted-dasd-add-new-fdasd-functions.patch b/libparted-dasd-add-new-fdasd-functions.patch deleted file mode 100644 index de9edd0..0000000 --- a/libparted-dasd-add-new-fdasd-functions.patch +++ /dev/null @@ -1,171 +0,0 @@ -From b9e12819ecef30087753b967bebc9809120593a6 Mon Sep 17 00:00:00 2001 -From: Wang Dong -Date: Wed, 26 Oct 2016 04:22:48 +0200 -Subject: [PATCH] libparted/dasd: add new fdasd functions - -Introduce a set of new functions from the fdasd utility of the s390-tools -to keep the code base in parted and s390-tools in sync. - -These new functions are: - fdasd_check_volser(): validate the volser input - fdasd_get_volser(): get volume serial (volser) - fdasd_change_volser(): change volser with string - fdasd_reuse_vtoc(): re-create vtoc labels based on the existing vtoc - -Signed-off-by: Wang Dong -Signed-off-by: Hendrik Brueckner -Signed-off-by: Brian C. Lane ---- - include/parted/fdasd.in.h | 4 ++ - libparted/labels/fdasd.c | 123 ++++++++++++++++++++++++++++++++++++++++++++++ - 2 files changed, 127 insertions(+) - -diff --git a/include/parted/fdasd.in.h b/include/parted/fdasd.in.h -index 09a35a0..9e5d7d1 100644 ---- a/include/parted/fdasd.in.h -+++ b/include/parted/fdasd.in.h -@@ -293,5 +293,9 @@ void fdasd_recreate_vtoc(fdasd_anchor_t *anc); - partition_info_t * fdasd_add_partition (fdasd_anchor_t *anc, - unsigned int start, unsigned int stop); - int fdasd_prepare_labels (fdasd_anchor_t *anc, int fd) ; -+void fdasd_check_volser(char *volser, int devno); -+int fdasd_get_volser(fdasd_anchor_t *anc, char *volser, int fd); -+void fdasd_change_volser(fdasd_anchor_t *anc, char *str); -+void fdasd_reuse_vtoc(fdasd_anchor_t *anc); - - #endif /* FDASD_H */ -diff --git a/libparted/labels/fdasd.c b/libparted/labels/fdasd.c -index e5df5cf..713ed6b 100644 ---- a/libparted/labels/fdasd.c -+++ b/libparted/labels/fdasd.c -@@ -1320,4 +1320,127 @@ fdasd_add_partition (fdasd_anchor_t *anc, unsigned int start, - return p; - } - -+/* -+ * Check for valid volume serial characters (max. 6) - remove invalid. -+ * If volser is empty, fill with default volser. -+ */ -+void fdasd_check_volser (char *volser, int devno) -+{ -+ int from, to; -+ -+ for (from = 0, to = 0; volser[from] && from < VOLSER_LENGTH; from++) { -+ -+ if ((volser[from] >= 0x23 && -+ volser[from] <= 0x25) || -+ (volser[from] >= 0x30 && -+ volser[from] <= 0x39) || -+ (volser[from] >= 0x40 && -+ volser[from] <= 0x5a) || -+ (volser[from] >= 0x61 && -+ volser[from] <= 0x7a)) -+ volser[to++] = toupper(volser[from]); -+ } -+ -+ volser[to] = 0x00; -+ -+ if (volser[0] == 0x00) -+ sprintf(volser, "0X%04x", devno); -+} -+ -+/* -+ * get volser from vtoc -+ */ -+int fdasd_get_volser (fdasd_anchor_t *anc, char *volser, int fd) -+{ -+ volume_label_t vlabel; -+ -+ vtoc_read_volume_label(fd, anc->label_pos, &vlabel); -+ vtoc_volume_label_get_volser(&vlabel, volser); -+ return 0; -+} -+ -+/* Changes the volume serial (menu option) -+ * -+ */ -+void fdasd_change_volser (fdasd_anchor_t *anc, char *str) -+{ -+ fdasd_check_volser(str, anc->devno); -+ vtoc_volume_label_set_volser(anc->vlabel, str); -+ -+ vtoc_set_cchhb(&anc->vlabel->vtoc, VTOC_START_CC, VTOC_START_HH, 0x01); -+ anc->vlabel_changed++; -+ anc->vtoc_changed++; -+} -+ -+/* -+ * re-create all VTOC labels, but use the partition information -+ * from existing VTOC -+ */ -+void fdasd_reuse_vtoc (fdasd_anchor_t *anc) -+{ -+ partition_info_t *part_info = anc->first; -+ struct fdasd_hd_geometry geo = anc->geo; -+ format1_label_t f1; -+ format4_label_t f4; -+ format5_label_t f5; -+ format7_label_t f7; -+ -+ vtoc_init_format4_label(&f4, geo.cylinders, anc->formatted_cylinders, -+ geo.heads, geo.sectors, -+ anc->blksize, anc->dev_type); -+ -+ /* reuse some FMT4 values */ -+ f4.DS4HPCHR = anc->f4->DS4HPCHR; -+ f4.DS4DSREC = anc->f4->DS4DSREC; -+ -+ /* re-initialize both free-space labels */ -+ vtoc_init_format5_label(&f5); -+ vtoc_init_format7_label(&f7); -+ -+ if (anc->fspace_trk > 0) -+ vtoc_set_freespace(&f4, &f5, &f7, '+', anc->verbose, -+ FIRST_USABLE_TRK, -+ FIRST_USABLE_TRK + anc->fspace_trk - 1, -+ anc->formatted_cylinders, geo.heads); -+ -+ while (part_info != NULL) { -+ if (part_info->used != 0x01) { -+ part_info = part_info->next; -+ continue; -+ } -+ -+ if (anc->formatted_cylinders > LV_COMPAT_CYL) -+ vtoc_init_format8_label(anc->blksize, -+ &part_info->f1->DS1EXT1, &f1); -+ else -+ vtoc_init_format1_label(anc->blksize, -+ &part_info->f1->DS1EXT1, &f1); -+ -+ -+ strncpy(f1.DS1DSNAM, part_info->f1->DS1DSNAM, 44); -+ strncpy((char *)f1.DS1DSSN, (char *)part_info->f1->DS1DSSN, 6); -+ f1.DS1CREDT = part_info->f1->DS1CREDT; -+ -+ memcpy(part_info->f1, &f1, sizeof(format1_label_t)); -+ -+ if (part_info->fspace_trk > 0) -+ vtoc_set_freespace(&f4, &f5, &f7, '+', anc->verbose, -+ part_info->end_trk + 1, -+ part_info->end_trk + -+ part_info->fspace_trk, -+ anc->formatted_cylinders, geo.heads); -+ -+ part_info = part_info->next; -+ } -+ -+ /* over-write old labels with new ones */ -+ memcpy(anc->f4, &f4, sizeof(format4_label_t)); -+ memcpy(anc->f5, &f5, sizeof(format5_label_t)); -+ memcpy(anc->f7, &f7, sizeof(format7_label_t)); -+ -+ anc->vtoc_changed++; -+ -+ return; -+} -+ - /* vim:set tabstop=4 shiftwidth=4 softtabstop=4: */ --- -2.16.4 - diff --git a/libparted-dasd-add-swap-flag-handling-for-DASD-CDL.patch b/libparted-dasd-add-swap-flag-handling-for-DASD-CDL.patch index 315a736..69debff 100644 --- a/libparted-dasd-add-swap-flag-handling-for-DASD-CDL.patch +++ b/libparted-dasd-add-swap-flag-handling-for-DASD-CDL.patch @@ -18,8 +18,10 @@ Signed-off-by: Sebastian Parschauer libparted/labels/dasd.c | 42 +++++++++++++++++++++++++----------------- 1 file changed, 25 insertions(+), 17 deletions(-) ---- a/libparted/labels/dasd.c -+++ b/libparted/labels/dasd.c +Index: parted-3.3/libparted/labels/dasd.c +=================================================================== +--- parted-3.3.orig/libparted/labels/dasd.c ++++ parted-3.3/libparted/labels/dasd.c @@ -65,6 +65,7 @@ extern void ped_disk_dasd_done (); typedef struct { int type; @@ -64,7 +66,7 @@ Signed-off-by: Sebastian Parschauer vtoc_ebcdic_enc(p->f1->DS1DSNAM, p->f1->DS1DSNAM, 44); dasd_data->type = 0; -@@ -745,14 +741,25 @@ dasd_partition_set_flag (PedPartition* p +@@ -749,14 +745,25 @@ dasd_partition_set_flag (PedPartition* p dasd_data = part->disk_specific; switch (flag) { @@ -92,7 +94,7 @@ Signed-off-by: Sebastian Parschauer dasd_data->lvm = state; return ped_partition_set_system(part, part->fs_type); default: -@@ -770,6 +777,8 @@ dasd_partition_get_flag (const PedPartit +@@ -774,6 +781,8 @@ dasd_partition_get_flag (const PedPartit dasd_data = part->disk_specific; switch (flag) { @@ -101,16 +103,16 @@ Signed-off-by: Sebastian Parschauer case PED_PARTITION_RAID: return dasd_data->raid; case PED_PARTITION_LVM: -@@ -784,6 +793,8 @@ dasd_partition_is_flag_available (const - PedPartitionFlag flag) - { +@@ -802,6 +811,8 @@ dasd_partition_is_flag_available (const + return 0; + switch (flag) { + case PED_PARTITION_SWAP: + return 1; case PED_PARTITION_RAID: return 1; case PED_PARTITION_LVM: -@@ -962,17 +973,14 @@ dasd_partition_set_system (PedPartition* +@@ -985,17 +996,14 @@ dasd_partition_set_system (PedPartition* return 1; } diff --git a/libparted-dasd-add-test-cases-for-the-new-fdasd-func.patch b/libparted-dasd-add-test-cases-for-the-new-fdasd-func.patch deleted file mode 100644 index 0077f1c..0000000 --- a/libparted-dasd-add-test-cases-for-the-new-fdasd-func.patch +++ /dev/null @@ -1,282 +0,0 @@ -From c11f5c005270d24bc3905ab3b743e96fc1a9a507 Mon Sep 17 00:00:00 2001 -From: Wang Dong -Date: Thu, 20 Apr 2017 10:20:07 +0200 -Subject: [PATCH] libparted/dasd: add test cases for the new fdasd functions - -The test case uses a temporary file in libparted/tests under -Check framwork.It can be issued by "make check" in the test dir. - -Signed-off-by: Wang Dong -Signed-off-by: Hendrik Brueckner ---- - libparted/tests/t4000-volser.sh | 20 +++++ - libparted/tests/volser.c | 188 ++++++++++++++++++++++++++++++++++++++++ - 2 files changed, 208 insertions(+) - create mode 100755 libparted/tests/t4000-volser.sh - create mode 100644 libparted/tests/volser.c - -diff --git a/libparted/tests/t4000-volser.sh b/libparted/tests/t4000-volser.sh -new file mode 100755 -index 0000000..89688ba ---- /dev/null -+++ b/libparted/tests/t4000-volser.sh -@@ -0,0 +1,20 @@ -+#!/bin/sh -+ -+# This program is free software; you can redistribute it and/or modify -+# it under the terms of the GNU General Public License as published by -+# the Free Software Foundation; either version 3 of the License, or -+# (at your option) any later version. -+ -+# This program is distributed in the hope that it will be useful, -+# but WITHOUT ANY WARRANTY; without even the implied warranty of -+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+# GNU General Public License for more details. -+ -+# You should have received a copy of the GNU General Public License -+# along with this program. If not, see . -+ -+. "${top_srcdir=../..}/tests/init.sh"; path_prepend_ . -+ -+volser || fail=1 -+ -+Exit $fail -diff --git a/libparted/tests/volser.c b/libparted/tests/volser.c -new file mode 100644 -index 0000000..9063821 ---- /dev/null -+++ b/libparted/tests/volser.c -@@ -0,0 +1,188 @@ -+/* -+ * Author: Wang Dong -+ */ -+ -+#include -+#include -+#include -+ -+#include -+#include -+#include -+#include -+#include "../arch/linux.h" -+#include "common.h" -+#include "progname.h" -+ -+/* set dasd first */ -+static char vol_devno[7] = {0}; -+static char *tmp_disk; -+static int fd; -+ -+static PedDisk *disk; -+static struct fdasd_anchor anc; -+static fdasd_anchor_t *anchor = &anc; -+static LinuxSpecific *arch_specific; -+ -+/* set the enviroment */ -+static void set_test (void) -+{ -+ PedDevice *dev; -+ PedDiskType *type; -+ type = ped_disk_type_get ("dasd"); -+ -+ tmp_disk = _create_disk (20*1024*1024); -+ fail_if (tmp_disk == NULL, "Failed to create temporary disk"); -+ dev = ped_device_get (tmp_disk); -+ if (dev == NULL) -+ return; -+ -+ disk = _create_disk_label (dev, type); -+ if (!ped_device_open (disk->dev)) -+ return; -+ -+ fdasd_initialize_anchor (anchor); -+ arch_specific = LINUX_SPECIFIC (disk->dev); -+ fd = arch_specific->fd; -+ if (!fdasd_get_geometry (dev, anchor, fd)) -+ return; -+ -+ fdasd_check_volume (anchor, fd); -+ sprintf (vol_devno, "0X%04x", anchor->devno); -+ ck_assert (strlen (vol_devno) == VOLSER_LENGTH); -+} -+ -+static void free_test (void) -+{ -+ ped_device_close (disk->dev); -+ ped_device_destroy (disk->dev); -+ unlink (tmp_disk); -+ free (tmp_disk); -+ fdasd_cleanup (anchor); -+} -+ -+/* Test with default volser */ -+START_TEST (test_get_volser) -+{ -+ char volser[7] = {0}; -+ fdasd_change_volser (anchor, vol_devno); -+ fdasd_write_labels (anchor, fd); -+ -+ fdasd_get_volser (anchor, volser, fd); -+ ck_assert (!strcmp (volser, vol_devno)); -+} -+END_TEST -+ -+START_TEST (test_check_volser) -+{ -+ char vol[7] = {0}; -+ char vol_long[] = "abcdefg"; -+ char vol_short[] = "ab_c "; -+ char vol_null[] = " "; -+ char *vol_input = NULL; -+ -+ vol_input = vol_long; -+ fdasd_check_volser (vol_input, anchor->devno); -+ ck_assert(!strcmp (vol_input, "ABCDEF")); -+ -+ vol_input = vol_short; -+ fdasd_check_volser (vol_input, anchor->devno); -+ ck_assert (!strcmp (vol_input, "ABC")); -+ -+ vol_input = vol_null; -+ fdasd_check_volser (vol_input, anchor->devno); -+ ck_assert (!strcmp (vol_input, vol_devno)); -+} -+END_TEST -+ -+START_TEST (test_change_volser) -+{ -+ -+ char vol[] = "000000"; -+ char volser[7] = {0}; -+ -+ fdasd_change_volser (anchor, vol); -+ fdasd_write_labels (anchor, fd); -+ -+ fdasd_get_volser (anchor, volser, fd); -+ ck_assert (!strcmp (volser, vol)); -+} -+END_TEST -+ -+/* -+ * fdsad_recreate_vtoc recreate the VTOC with existing one. -+ * So the partition information should be not changed after recreating -+ * VTOC. -+*/ -+START_TEST (test_reuse_vtoc) -+{ -+ ds5ext_t before; -+ ds5ext_t after; -+ -+ memcpy (&before, &anchor->f5->DS5AVEXT, sizeof(ds5ext_t)); -+ -+ if (anchor->fspace_trk) { -+ fdasd_reuse_vtoc (anchor); -+ memcpy (&after, &anchor->f5->DS5AVEXT, sizeof(ds5ext_t)); -+ if ((before.t != after.t) && (before.fc != after.fc) && (before.ft != after.ft)) -+ ck_abort (); -+ } else { -+ fdasd_reuse_vtoc (anchor); -+ memcpy (&after, &anchor->f5->DS5AVEXT, sizeof(ds5ext_t)); -+ if ((before.t != after.t) && (before.fc != after.fc) && (before.ft != after.ft)) -+ ck_abort (); -+ } -+} -+END_TEST -+ -+int main (int argc, char **argv) -+{ -+ -+ set_program_name (argv[0]); -+ -+#if defined __s390__ || defined __s390x__ -+ -+ int number_failed = 0; -+ -+ Suite *suite = suite_create ("Volser"); -+ -+ TCase *tcase_get = tcase_create ("Get"); -+ TCase *tcase_check = tcase_create ("Check"); -+ TCase *tcase_change = tcase_create ("Change"); -+ TCase *tcase_vtoc = tcase_create ("Vtoc"); -+ -+ ped_exception_set_handler (_test_exception_handler); -+ -+ tcase_add_checked_fixture (tcase_check, set_test, free_test); -+ tcase_add_test (tcase_check, test_check_volser); -+ tcase_set_timeout (tcase_check, 0); -+ suite_add_tcase (suite, tcase_check); -+ -+ tcase_add_checked_fixture (tcase_change, set_test, free_test); -+ tcase_add_test (tcase_change, test_change_volser); -+ tcase_set_timeout (tcase_change, 0); -+ suite_add_tcase (suite, tcase_change); -+ -+ tcase_add_checked_fixture (tcase_get, set_test, free_test); -+ tcase_add_test (tcase_get, test_get_volser); -+ tcase_set_timeout (tcase_get, 0); -+ suite_add_tcase (suite, tcase_get); -+ -+ tcase_add_checked_fixture (tcase_vtoc, set_test, free_test); -+ tcase_add_test (tcase_vtoc, test_reuse_vtoc); -+ tcase_set_timeout (tcase_vtoc, 0); -+ suite_add_tcase (suite, tcase_vtoc); -+ -+ SRunner *srunner = srunner_create (suite); -+ /* When to debug, uncomment this line */ -+ /* srunner_set_fork_status (srunner, CK_NOFORK); */ -+ -+ srunner_run_all (srunner, CK_VERBOSE); -+ -+ number_failed = srunner_ntests_failed (srunner); -+ srunner_free (srunner); -+ return (number_failed == 0) ? EXIT_SUCCESS : EXIT_FAILURE; -+ -+#endif -+ return 0; -+} --- -2.16.4 - -From 571e078406b59e8dcf02db3e8fe28d8eb4d2cef0 Mon Sep 17 00:00:00 2001 -From: Wang Dong -Date: Wed, 26 Oct 2016 04:22:49 +0200 -Subject: [PATCH] libparted/dasd: add test cases for the new fdasd functions - -The test case uses a temporary file in libparted/tests under -Check framwork. It can be issued by "make check" in the test dir. - -Signed-off-by: Wang Dong -Signed-off-by: Hendrik Brueckner -Signed-off-by: Brian C. Lane ---- - libparted/tests/Makefile.am | 5 +++-- - 1 file changed, 3 insertions(+), 2 deletions(-) - -diff --git a/libparted/tests/Makefile.am b/libparted/tests/Makefile.am -index c7c10a9..9689fb3 100644 ---- a/libparted/tests/Makefile.am -+++ b/libparted/tests/Makefile.am -@@ -3,9 +3,9 @@ - # - # This file may be modified and/or distributed without restriction. - --TESTS = t1000-label.sh t2000-disk.sh t2100-zerolen.sh t3000-symlink.sh -+TESTS = t1000-label.sh t2000-disk.sh t2100-zerolen.sh t3000-symlink.sh t4000-volser.sh - EXTRA_DIST = $(TESTS) --check_PROGRAMS = label disk zerolen symlink -+check_PROGRAMS = label disk zerolen symlink volser - AM_CFLAGS = $(WARN_CFLAGS) $(WERROR_CFLAGS) - - LDADD = \ -@@ -23,6 +23,7 @@ label_SOURCES = common.h common.c label.c - disk_SOURCES = common.h common.c disk.c - zerolen_SOURCES = common.h common.c zerolen.c - symlink_SOURCES = common.h common.c symlink.c -+volser_SOURCES = common.h common.c volser.c - - # Arrange to symlink to tests/init.sh. - CLEANFILES = init.sh --- -2.16.4 - diff --git a/libparted-dasd-correct-the-offset-where-the-first-pa.patch b/libparted-dasd-correct-the-offset-where-the-first-pa.patch deleted file mode 100644 index 7b267c9..0000000 --- a/libparted-dasd-correct-the-offset-where-the-first-pa.patch +++ /dev/null @@ -1,53 +0,0 @@ -From 4126d0292c75cf7d50a2f4e9d485a52b5beafccc Mon Sep 17 00:00:00 2001 -From: Wang Dong -Date: Tue, 14 Jun 2016 12:19:40 +0200 -Subject: [PATCH] libparted/dasd: correct the offset where the first partition - begins - -The start point of first partition must start at least from the third -track of DASD, due to the existence of metadata in the first two track. -The previous constraint just sets all the device to be partitioned. -So when the start point of the first partition start before the third -track, (For example if it starts from.0) parted will exit abruptly. -And this kind of job must be done with constraint explicitly. - -Then the constraint is modified to exclude the first two tracks and -to make the first partition start from the third track by default. - -Signed-off-by: Wang Dong -Reviewed-by: Viktor Mihajlovski -Signed-off-by: Hendrik Brueckner -Signed-off-by: Brian C. Lane ---- - libparted/labels/dasd.c | 8 +++++++- - 1 file changed, 7 insertions(+), 1 deletion(-) - -diff --git a/libparted/labels/dasd.c b/libparted/labels/dasd.c -index f79a867..4e68512 100644 ---- a/libparted/labels/dasd.c -+++ b/libparted/labels/dasd.c -@@ -829,6 +829,7 @@ _primary_constraint (PedDisk* disk) - PedSector sector_size; - LinuxSpecific* arch_specific; - DasdDiskSpecific* disk_specific; -+ PedSector start; - - PDEBUG; - -@@ -842,7 +843,12 @@ _primary_constraint (PedDisk* disk) - if (!ped_alignment_init (&end_align, -1, - disk->dev->hw_geom.sectors * sector_size)) - return NULL; -- if (!ped_geometry_init (&max_geom, disk->dev, 0, disk->dev->length)) -+ -+ start = (FIRST_USABLE_TRK * (long long) disk->dev->hw_geom.sectors -+ * (long long) arch_specific->real_sector_size -+ / (long long) disk->dev->sector_size); -+ -+ if (!ped_geometry_init (&max_geom, disk->dev, start, disk->dev->length)) - return NULL; - - return ped_constraint_new(&start_align, &end_align, &max_geom, --- -2.16.4 - diff --git a/libparted-dasd-implicit-partition-disk-flag.patch b/libparted-dasd-implicit-partition-disk-flag.patch index 3c04fcb..8a929d7 100644 --- a/libparted-dasd-implicit-partition-disk-flag.patch +++ b/libparted-dasd-implicit-partition-disk-flag.patch @@ -7,10 +7,10 @@ Patch-mainline: no, custom SUSE patch libparted/labels/dasd.c | 45 +++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 50 insertions(+), 1 deletion(-) -Index: parted-3.1/include/parted/disk.in.h +Index: parted-3.3/include/parted/disk.in.h =================================================================== ---- parted-3.1.orig/include/parted/disk.in.h -+++ parted-3.1/include/parted/disk.in.h +--- parted-3.3.orig/include/parted/disk.in.h ++++ parted-3.3/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 */ @@ -24,11 +24,11 @@ Index: parted-3.1/include/parted/disk.in.h /** * Partition types -Index: parted-3.1/libparted/disk.c +Index: parted-3.3/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) +--- parted-3.3.orig/libparted/disk.c ++++ parted-3.3/libparted/disk.c +@@ -841,6 +841,8 @@ ped_disk_flag_get_name(PedDiskFlag flag) return N_("cylinder_alignment"); case PED_DISK_GPT_PMBR_BOOT: return N_("pmbr_boot"); @@ -37,10 +37,10 @@ Index: parted-3.1/libparted/disk.c default: ped_exception_throw ( PED_EXCEPTION_BUG, -Index: parted-3.1/libparted/labels/dasd.c +Index: parted-3.3/libparted/labels/dasd.c =================================================================== ---- parted-3.1.orig/libparted/labels/dasd.c -+++ parted-3.1/libparted/labels/dasd.c +--- parted-3.3.orig/libparted/labels/dasd.c ++++ parted-3.3/libparted/labels/dasd.c @@ -73,6 +73,7 @@ typedef struct { unsigned int format_type; unsigned int label_block; @@ -79,7 +79,7 @@ Index: parted-3.1/libparted/labels/dasd.c /* CDL format, newer */ disk_specific->format_type = 2; disk_specific->label_block = 2; -@@ -293,6 +303,7 @@ dasd_read (PedDisk* disk) +@@ -289,6 +299,7 @@ dasd_read (PedDisk* disk) goto error_close_dev; disk_specific->format_type = 1; @@ -87,7 +87,7 @@ Index: parted-3.1/libparted/labels/dasd.c /* Register implicit partition */ ped_disk_delete_all (disk); -@@ -905,6 +916,40 @@ dasd_partition_enumerate (PedPartition* +@@ -922,6 +933,40 @@ dasd_partition_enumerate (PedPartition* } static int diff --git a/libparted-dasd-unify-vtoc-handling-for-cdl-ldl.patch b/libparted-dasd-unify-vtoc-handling-for-cdl-ldl.patch deleted file mode 100644 index 1a333fd..0000000 --- a/libparted-dasd-unify-vtoc-handling-for-cdl-ldl.patch +++ /dev/null @@ -1,272 +0,0 @@ -From 4f25d54d4d2bd6ae12d56b5a97ed2b7f60f753e9 Mon Sep 17 00:00:00 2001 -From: Wang Dong -Date: Wed, 26 Oct 2016 04:22:46 +0200 -Subject: [PATCH] libparted/dasd: unify vtoc handling for cdl/ldl - -Merge volume label cdl and ldl. It is convenient to manipulate -the same structure. Also remove unused arguments in the functions. - -Signed-off-by: Wang Dong -Signed-off-by: Hendrik Brueckner -Signed-off-by: Brian C. Lane ---- - include/parted/vtoc.in.h | 34 +++++++++++++++++++--------------- - libparted/labels/dasd.c | 8 +++----- - libparted/labels/vtoc.c | 38 +++++++++++++++++--------------------- - 3 files changed, 39 insertions(+), 41 deletions(-) - -diff --git a/include/parted/vtoc.in.h b/include/parted/vtoc.in.h -index 499c2d3..b9da23a 100644 ---- a/include/parted/vtoc.in.h -+++ b/include/parted/vtoc.in.h -@@ -62,7 +62,6 @@ typedef struct cchh cchh_t; - typedef struct labeldate labeldate_t; - typedef struct volume_label volume_label_t; - typedef struct cms_volume_label cms_volume_label_t; --typedef struct ldl_volume_label ldl_volume_label_t; - typedef struct extent extent_t; - typedef struct dev_const dev_const_t; - typedef struct format1_label format1_label_t; -@@ -94,6 +93,19 @@ struct __attribute__ ((packed)) labeldate { - u_int16_t day; - }; - -+/* -+ * The following structure is a merger of the cdl and ldl volume label. -+ * On an ldl disk there is no key information, so when reading an -+ * ldl label from disk, the data should be copied at the address of vollbl. -+ * On the other side, the field ldl_version is reserved in a cdl record -+ * and the field formatted_blocks exists only for ldl labels. So when -+ * reading a cdl label from disk, the formatted_blocks field will contain -+ * arbitrary data. -+ * This layout may be a bit awkward, but the advantage of having the -+ * same label type for both disk layout types is bigger than the effort -+ * for taking a bit of extra care at the fringes. -+ */ -+ - struct __attribute__ ((packed)) volume_label { - char volkey[4]; /* volume key = volume label */ - char vollbl[4]; /* volume label ("VOL1" in EBCDIC) */ -@@ -107,15 +119,8 @@ struct __attribute__ ((packed)) volume_label { - char labperci[4]; /* no of labels per CI (FBA), blanks for CKD */ - char res2[4]; /* reserved */ - char lvtoc[14]; /* owner code for LVTOC */ -- char res3[29]; /* reserved */ -- char fudge[4]; /* filler to match length of ldl label */ --}; -- --struct __attribute__ ((packed)) ldl_volume_label { -- char vollbl[4]; /* Label identifier ("LNX1" in EBCDIC) */ -- char volid[6]; /* Volume identifier */ -- char res3[69]; /* Reserved field */ -- char ldl_version[1]; /* Version number, valid for ldl format */ -+ char res3[28]; /* reserved */ -+ char ldl_version; /* version number, valid for ldl format */ - u_int64_t formatted_blocks; /* valid when ldl_version >= "2" (in - EBCDIC) */ - }; -@@ -335,11 +340,10 @@ void vtoc_write_label (int fd, unsigned long position, - format7_label_t const *f7, - format9_label_t const *f9); - --void vtoc_init_format1_label (char *volid, unsigned int blksize, -+void vtoc_init_format1_label (unsigned int blksize, - extent_t *part_extent, format1_label_t *f1); - - void vtoc_init_format4_label (format4_label_t *f4lbl, -- unsigned int usable_partitions, - unsigned int compat_cylinders, - unsigned int real_cylinders, - unsigned int tracks, -@@ -352,11 +356,11 @@ void vtoc_update_format4_label (format4_label_t *f4, cchhb_t *highest_f1, - - void vtoc_init_format5_label (format5_label_t *f5); - --void vtoc_update_format5_label_add (format5_label_t *f5, int verbose, int cyl, -+void vtoc_update_format5_label_add (format5_label_t *f5, int verbose, - int trk, u_int16_t a, u_int16_t b, - u_int8_t c); - --void vtoc_update_format5_label_del (format5_label_t *f5, int verbose, int cyl, -+void vtoc_update_format5_label_del (format5_label_t *f5, int verbose, - int trk, u_int16_t a, u_int16_t b, - u_int8_t c); - -@@ -368,7 +372,7 @@ void vtoc_update_format7_label_add (format7_label_t *f7, int verbose, - void vtoc_update_format7_label_del (format7_label_t *f7, int verbose, - u_int32_t a, u_int32_t b); - --void vtoc_init_format8_label (char *volid, unsigned int blksize, -+void vtoc_init_format8_label (unsigned int blksize, - extent_t *part_extent, format1_label_t *f1); - - void vtoc_update_format8_label (cchhb_t *associated_f9, format1_label_t *f8); -diff --git a/libparted/labels/dasd.c b/libparted/labels/dasd.c -index 4e68512..7594e96 100644 ---- a/libparted/labels/dasd.c -+++ b/libparted/labels/dasd.c -@@ -330,13 +330,12 @@ dasd_read (PedDisk* disk) - DasdPartitionData* dasd_data; - - union vollabel { -- volume_label_t unused; -- ldl_volume_label_t ldl; -+ volume_label_t ldl; - cms_volume_label_t cms; - }; - union vollabel *cms_ptr1 = (union vollabel *) anchor.vlabel; - cms_volume_label_t *cms_ptr = &cms_ptr1->cms; -- ldl_volume_label_t *ldl_ptr = &cms_ptr1->ldl; -+ volume_label_t *ldl_ptr = &cms_ptr1->ldl; - int partition_start_block; - - disk_specific->format_type = 1; -@@ -360,8 +359,7 @@ dasd_read (PedDisk* disk) - * (long long) cms_ptr->disk_offset; - - if (is_ldl) -- if (strncmp(ldl_ptr->ldl_version, -- vtoc_ebcdic_enc("2", str, 1), 1) >= 0) -+ if (ldl_ptr->ldl_version >= 0xf2) - end = (long long) arch_specific->real_sector_size - / (long long) disk->dev->sector_size - * (long long) ldl_ptr->formatted_blocks - 1; -diff --git a/libparted/labels/vtoc.c b/libparted/labels/vtoc.c -index fdfa94f..d47b791 100644 ---- a/libparted/labels/vtoc.c -+++ b/libparted/labels/vtoc.c -@@ -150,7 +150,7 @@ enum failure { - unable_to_read - }; - --static char buffer[89]; -+static char buffer[93]; - - static void - vtoc_error (enum failure why, char const *s1, char const *s2) -@@ -329,7 +329,7 @@ void - vtoc_volume_label_init (volume_label_t *vlabel) - { - PDEBUG -- sprintf(buffer, "%88s", " "); -+ sprintf(buffer, "%92s", " "); - vtoc_ebcdic_enc(buffer, buffer, sizeof *vlabel); - memcpy(vlabel, buffer, sizeof *vlabel); - } -@@ -348,8 +348,8 @@ vtoc_read_volume_label (int f, unsigned long vlabel_start, - typedef union vollabel vollabel_t; - - union __attribute__((packed)) vollabel { -+ /* cdl and ldl have the same data struct */ - volume_label_t cdl; -- ldl_volume_label_t ldl; - cms_volume_label_t cms; - }; - -@@ -373,9 +373,7 @@ vtoc_read_volume_label (int f, unsigned long vlabel_start, - } - - rc = read(f, vlabel, sizeof(volume_label_t)); -- if (rc != sizeof(volume_label_t) && -- /* For CDL we ask to read 88 bytes, but only get 84 */ -- rc != sizeof(volume_label_t) - 4) { -+ if (rc != sizeof(volume_label_t)) { - vtoc_error(unable_to_read, "vtoc_read_volume_label", - _("Could not read volume label.")); - return 1; -@@ -427,10 +425,8 @@ vtoc_write_volume_label (int f, unsigned long vlabel_start, - vtoc_error(unable_to_seek, "vtoc_write_volume_label", - _("Could not write volume label.")); - -- rc = write(f, vlabel, sizeof(volume_label_t) - 4); -- /* Subtract 4 to leave off the "fudge" variable when writing. -- We only write CDL volume labels, never LDL or CMS. */ -- if (rc != sizeof(volume_label_t) - 4) -+ rc = write(f, vlabel, sizeof(volume_label_t)); -+ if (rc != sizeof(volume_label_t)) - vtoc_error(unable_to_write, "vtoc_write_volume_label", - _("Could not write volume label.")); - -@@ -632,7 +628,7 @@ vtoc_write_label (int f, unsigned long position, - * initializes a format4 label - */ - void --vtoc_init_format4_label (format4_label_t *f4, unsigned int usable_partitions, -+vtoc_init_format4_label (format4_label_t *f4, - unsigned int compat_cylinders, - unsigned int real_cylinders, unsigned int tracks, - unsigned int blocks, unsigned int blksize, -@@ -740,7 +736,7 @@ vtoc_init_format7_label (format7_label_t *f7) - * format1 or format 8 label, all but the field DS1FMTID - */ - void --vtoc_init_format_1_8_label (char *volid, unsigned int blksize, -+vtoc_init_format_1_8_label (unsigned int blksize, - extent_t *part_extent, format1_label_t *f1) - { - PDEBUG -@@ -794,18 +790,18 @@ vtoc_init_format_1_8_label (char *volid, unsigned int blksize, - } - - void --vtoc_init_format1_label (char *volid, unsigned int blksize, -+vtoc_init_format1_label (unsigned int blksize, - extent_t *part_extent, format1_label_t *f1) - { -- vtoc_init_format_1_8_label(volid, blksize, part_extent, f1); -+ vtoc_init_format_1_8_label(blksize, part_extent, f1); - f1->DS1FMTID = 0xf1; - } - - void --vtoc_init_format8_label (char *volid, unsigned int blksize, -+vtoc_init_format8_label (unsigned int blksize, - extent_t *part_extent, format1_label_t *f8) - { -- vtoc_init_format_1_8_label(volid, blksize, part_extent, f8); -+ vtoc_init_format_1_8_label(blksize, part_extent, f8); - f8->DS1FMTID = 0xf8; - } - -@@ -886,7 +882,7 @@ vtoc_reorganize_FMT5_extents (format5_label_t *f5) - * add a free space extent description to the VTOC FMT5 DSCB - */ - void --vtoc_update_format5_label_add (format5_label_t *f5, int verbose, int cyl, -+vtoc_update_format5_label_add (format5_label_t *f5, int verbose, - int trk, u_int16_t a, u_int16_t b, u_int8_t c) - { - PDEBUG -@@ -974,7 +970,7 @@ vtoc_update_format5_label_add (format5_label_t *f5, int verbose, int cyl, - * remove a free space extent description from the VTOC FMT5 DSCB - */ - void --vtoc_update_format5_label_del (format5_label_t *f5, int verbose, int cyl, -+vtoc_update_format5_label_del (format5_label_t *f5, int verbose, - int trk, u_int16_t a, u_int16_t b, u_int8_t c) - { - PDEBUG -@@ -1054,7 +1050,7 @@ vtoc_update_format5_label_del (format5_label_t *f5, int verbose, int cyl, - ext->ft = (a - ext->t) % trk; - - vtoc_update_format5_label_add(f5, verbose, -- cyl, trk, x, y, z); -+ trk, x, y, z); - - if (verbose) - puts ("FMT5 del extent: 2 pieces"); -@@ -1322,9 +1318,9 @@ vtoc_set_freespace(format4_label_t *f4, format5_label_t *f5, - z = (u_int8_t) ((stop - start + 1) % trk); - - if (ch == '+') -- vtoc_update_format5_label_add(f5, verbose, cyl, trk, x, y, z); -+ vtoc_update_format5_label_add(f5, verbose, trk, x, y, z); - else if (ch == '-') -- vtoc_update_format5_label_del(f5, verbose, cyl, trk, x, y, z); -+ vtoc_update_format5_label_del(f5, verbose, trk, x, y, z); - else - puts ("BUG: syntax error in vtoc_set_freespace call"); - --- -2.16.4 - diff --git a/libparted-dasd-update-and-improve-fdasd-functions.patch b/libparted-dasd-update-and-improve-fdasd-functions.patch deleted file mode 100644 index 3a07a37..0000000 --- a/libparted-dasd-update-and-improve-fdasd-functions.patch +++ /dev/null @@ -1,208 +0,0 @@ -From db37c8c017ebef8f241420dda071940957d4bbe5 Mon Sep 17 00:00:00 2001 -From: Wang Dong -Date: Wed, 26 Oct 2016 04:22:47 +0200 -Subject: [PATCH] libparted/dasd: update and improve fdasd functions - -Update the fdasd_anchor_t data structure and the fdasd_cleanup() -function. Also correct vtoc_changed and vlabel_changed accounting -because they are important to rewrite vtoc to save the changes. - -Wang Dong -Hendrik Brueckner - -Signed-off-by: Brian C. Lane ---- - include/parted/fdasd.in.h | 14 +++++------- - libparted/labels/fdasd.c | 56 ++++++++++++++++++++++++----------------------- - 2 files changed, 35 insertions(+), 35 deletions(-) - -diff --git a/include/parted/fdasd.in.h b/include/parted/fdasd.in.h -index 4e351c4..09a35a0 100644 ---- a/include/parted/fdasd.in.h -+++ b/include/parted/fdasd.in.h -@@ -186,6 +186,7 @@ typedef struct format_data_t { - /***************************************************************************** - * SECTION: Further IOCTL Definitions (see fs.h) * - *****************************************************************************/ -+#define BLKROGET _IO(0x12,94) /* get read-only status (0 = read_write) */ - /* re-read partition table */ - #define BLKRRPART _IO(0x12,95) - /* get block device sector size */ -@@ -198,15 +199,14 @@ typedef struct format_data_t { - /***************************************************************************** - * SECTION: FDASD internal types * - *****************************************************************************/ -+#define PARTN_MASK ((1 << DASD_PARTN_BITS) - 1) -+#define USABLE_PARTITIONS ((1 << DASD_PARTN_BITS) - 1) - - #define DASD_MIN_API_VERSION 0 - - #define DEFAULT_FDASD_CONF "/etc/fdasd.conf" /* default config file */ - --#define PARTN_MASK ((1 << DASD_PARTN_BITS) - 1) --#define USABLE_PARTITIONS ((1 << DASD_PARTN_BITS) - 1) -- --#define FDASD_VERSION "1.05" -+#define FDASD_VERSION "1.32.0" - #define DEVICE "device" - #define DISC "disc" - #define PART "part" -@@ -233,9 +233,6 @@ typedef struct config_data { - typedef struct fdasd_anchor { - int vlabel_changed; - int vtoc_changed; -- int devname_specified; -- int volid_specified; -- int config_specified; - int auto_partition; - int print_table; - int big_disk; -@@ -282,7 +279,8 @@ enum fdasd_failure { - vlabel_corrupted, - dsname_corrupted, - malloc_failed, -- device_verification_failed -+ device_verification_failed, -+ volser_not_found - }; - - void fdasd_cleanup (fdasd_anchor_t *anchor); -diff --git a/libparted/labels/fdasd.c b/libparted/labels/fdasd.c -index 968b332..e5df5cf 100644 ---- a/libparted/labels/fdasd.c -+++ b/libparted/labels/fdasd.c -@@ -106,28 +106,26 @@ fdasd_cleanup (fdasd_anchor_t *anchor) - { - PDEBUG - int i; -- partition_info_t *p, *q; -+ partition_info_t *part_info, *next; - - if (anchor == NULL) - return; - -- free(anchor->f4); -- free(anchor->f5); -- free(anchor->f7); -- free(anchor->f9); -- free(anchor->vlabel); -- -- p = anchor->first; -- if (p == NULL) -- return; -- -- for (i=1; i <= USABLE_PARTITIONS; i++) { -- if (p == NULL) -- return; -- q = p->next; -- free(p->f1); -- free(p); -- p = q; -+ if (anchor->f4 != NULL) -+ free(anchor->f4); -+ if (anchor->f5 != NULL) -+ free(anchor->f5); -+ if (anchor->f7 != NULL) -+ free(anchor->f7); -+ if (anchor->vlabel != NULL) -+ free(anchor->vlabel); -+ -+ part_info = anchor->first; -+ for (i = 1; i <= USABLE_PARTITIONS && part_info != NULL; i++) { -+ next = part_info->next; -+ free(part_info->f1); -+ free(part_info); -+ part_info = next; - } - } - -@@ -190,6 +188,9 @@ fdasd_error (fdasd_anchor_t *anc, enum fdasd_failure why, char const *str) - _("Device verification failed"), - _("The specified device is not a valid DASD device")); - break; -+ case volser_not_found: -+ sprintf(error, "fdasd: %s -- %s\n", _("VOLSER not found on device"), str); -+ break; - default: - sprintf(error, "fdasd: %s: %s\n", _("Fatal error"), str); - } -@@ -287,7 +288,7 @@ fdasd_write_vtoc_labels (fdasd_anchor_t * anc, int fd) - PDEBUG - partition_info_t *p; - unsigned long b, maxblk; -- char dsno[6], s1[7], s2[45], *c1, *c2, *ch; -+ char dsno[6], s1[VOLSER_LENGTH + 1], s2[45], *c1, *c2, *ch; - int i = 0, k = 0; - cchhb_t f9addr; - format1_label_t emptyf1; -@@ -519,7 +520,6 @@ fdasd_recreate_vtoc (fdasd_anchor_t *anc) - int i; - - vtoc_init_format4_label(anc->f4, -- USABLE_PARTITIONS, - anc->geo.cylinders, - anc->formatted_cylinders, - anc->geo.heads, -@@ -767,7 +767,7 @@ fdasd_invalid_vtoc_pointer(fdasd_anchor_t *anc) - anc->formatted_cylinders = anc->hw_cylinders; - anc->fspace_trk = anc->formatted_cylinders * anc->geo.heads - - FIRST_USABLE_TRK; -- vtoc_init_format4_label(anc->f4, USABLE_PARTITIONS, -+ vtoc_init_format4_label(anc->f4, - anc->geo.cylinders, anc->formatted_cylinders, - anc->geo.heads, anc->geo.sectors, - anc->blksize, anc->dev_type); -@@ -781,6 +781,8 @@ fdasd_invalid_vtoc_pointer(fdasd_anchor_t *anc) - anc->formatted_cylinders, anc->geo.heads); - - vtoc_set_cchhb(&anc->vlabel->vtoc, VTOC_START_CC, VTOC_START_HH, 0x01); -+ anc->vtoc_changed++; -+ anc->vlabel_changed++; - } - - /* -@@ -792,7 +794,7 @@ fdasd_process_invalid_vtoc(fdasd_anchor_t *anc) - anc->formatted_cylinders = anc->hw_cylinders; - anc->fspace_trk = anc->formatted_cylinders * anc->geo.heads - - FIRST_USABLE_TRK; -- vtoc_init_format4_label(anc->f4, USABLE_PARTITIONS, -+ vtoc_init_format4_label(anc->f4, - anc->geo.cylinders, anc->formatted_cylinders, - anc->geo.heads, anc->geo.sectors, - anc->blksize, anc->dev_type); -@@ -803,6 +805,8 @@ fdasd_process_invalid_vtoc(fdasd_anchor_t *anc) - FIRST_USABLE_TRK, - anc->formatted_cylinders * anc->geo.heads - 1, - anc->formatted_cylinders, anc->geo.heads); -+ -+ anc->vtoc_changed++; - } - - -@@ -875,7 +879,7 @@ fdasd_check_volume (fdasd_anchor_t *anc, int fd) - - fdasd_init_volume_label(anc, fd); - -- vtoc_init_format4_label(anc->f4, USABLE_PARTITIONS, -+ vtoc_init_format4_label(anc->f4, - anc->geo.cylinders, anc->formatted_cylinders, - anc->geo.heads, anc->geo.sectors, - anc->blksize, anc->dev_type); -@@ -1286,12 +1290,10 @@ fdasd_add_partition (fdasd_anchor_t *anc, unsigned int start, - return 0; - - if (anc->formatted_cylinders > LV_COMPAT_CYL) { -- vtoc_init_format8_label(anc->vlabel->volid, anc->blksize, &ext, -- p->f1); -+ vtoc_init_format8_label(anc->blksize, &ext, p->f1); - } else { - PDEBUG; -- vtoc_init_format1_label(anc->vlabel->volid, anc->blksize, &ext, -- p->f1); -+ vtoc_init_format1_label(anc->blksize, &ext, p->f1); - } - - PDEBUG; --- -2.16.4 - diff --git a/libparted-device-mapper-uses-512b-sectors.patch b/libparted-device-mapper-uses-512b-sectors.patch deleted file mode 100644 index 30e5bef..0000000 --- a/libparted-device-mapper-uses-512b-sectors.patch +++ /dev/null @@ -1,90 +0,0 @@ -From f98f791e19669b900345dad7d96ea4df974e4596 Mon Sep 17 00:00:00 2001 -From: "Brian C. Lane" -Date: Wed, 4 Feb 2015 16:46:07 -0800 -Subject: [PATCH] libparted: device mapper uses 512b sectors - -device mapper doesn't use the device's sector size when creating a -table. It always uses 512b units. This causes partitions to be created -8x smaller than expected on devices with 4906b sectors. ---- - NEWS | 4 ++++ - libparted/arch/linux.c | 21 +++++++++++++++++---- - 2 files changed, 21 insertions(+), 4 deletions(-) - -Index: parted-3.2/NEWS -=================================================================== ---- parted-3.2.orig/NEWS -+++ parted-3.2/NEWS -@@ -162,6 +162,10 @@ GNU parted NEWS - - ** Bug Fixes - -+ 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. -Index: parted-3.2/libparted/arch/linux.c -=================================================================== ---- parted-3.2.orig/libparted/arch/linux.c -+++ parted-3.2/libparted/arch/linux.c -@@ -2768,6 +2768,12 @@ _dm_get_partition_start_and_length(PedPa - if (sscanf (params, "%d:%d %Ld", &major, &minor, start) != 3) - goto err; - rc = 1; -+ -+ /* device-mapper uses 512b units, make sure we return length and start in terms of the device's -+ * sector size. -+ */ -+ *start /= (part->disk->dev->sector_size / PED_SECTOR_SIZE_DEFAULT); -+ *length /= (part->disk->dev->sector_size / PED_SECTOR_SIZE_DEFAULT); - err: - free (path); - dm_task_destroy(task); -@@ -2815,8 +2821,10 @@ _dm_add_partition (PedDisk* disk, const - /* Caution: dm_task_destroy frees dev_name. */ - dm_task_destroy (task); - task = NULL; -+ /* device-mapper uses 512b units, not the device's sector size */ - if ( ! (params = zasprintf ("%d:%d %lld", arch_specific->major, -- arch_specific->minor, part->geom.start))) -+ arch_specific->minor, -+ part->geom.start * (disk->dev->sector_size / PED_SECTOR_SIZE_DEFAULT)))) - goto err; - - task = dm_task_create (DM_DEVICE_CREATE); -@@ -2826,7 +2834,8 @@ _dm_add_partition (PedDisk* disk, const - dm_task_set_name (task, vol_name); - if (vol_uuid) - dm_task_set_uuid (task, vol_uuid); -- dm_task_add_target (task, 0, part->geom.length, -+ /* device-mapper uses 512b units, not the device's sector size */ -+ dm_task_add_target (task, 0, part->geom.length * (disk->dev->sector_size / PED_SECTOR_SIZE_DEFAULT), - "linear", params); - if (!dm_task_set_cookie (task, &cookie, 0)) - goto err; -@@ -2883,8 +2892,11 @@ _dm_resize_partition (PedDisk* disk, con - /* Caution: dm_task_destroy frees dev_name. */ - dm_task_destroy (task); - task = NULL; -+ -+ /* device-mapper uses 512b units, not the device's sector size */ - if ( ! (params = zasprintf ("%d:%d %lld", arch_specific->major, -- arch_specific->minor, part->geom.start))) -+ arch_specific->minor, -+ part->geom.start * (disk->dev->sector_size / PED_SECTOR_SIZE_DEFAULT)))) - goto err; - - task = dm_task_create (DM_DEVICE_RELOAD); -@@ -2892,7 +2904,8 @@ _dm_resize_partition (PedDisk* disk, con - goto err; - - dm_task_set_name (task, vol_name); -- dm_task_add_target (task, 0, part->geom.length, -+ /* device-mapper uses 512b units, not the device's sector size */ -+ dm_task_add_target (task, 0, part->geom.length * (disk->dev->sector_size / PED_SECTOR_SIZE_DEFAULT), - "linear", params); - if (!dm_task_set_cookie (task, &cookie, 0)) - goto err; diff --git a/libparted-dont-warn-if-no-HDIO_GET_IDENTITY.patch b/libparted-dont-warn-if-no-HDIO_GET_IDENTITY.patch deleted file mode 100644 index 41922b1..0000000 --- a/libparted-dont-warn-if-no-HDIO_GET_IDENTITY.patch +++ /dev/null @@ -1,38 +0,0 @@ -From: Sebastian Parschauer -Date: Tue, 4 Oct 2016 10:30:37 +0200 -Subject: libparted: Don't warn if no HDIO_GET_IDENTITY ioctl -References: bsc#964012, bsc#1001967 -Patch-mainline: v3.3 -Git-commit: 3df498541058e933881190677b4cf10193f6aa68 - -Fully virtualized Xen VMs (HVM) use Linux IDE devices which don't -support the HDIO_GET_IDENTITY ioctl. EINVAL is returned, a warning -is printed and the device model is set to "Generic IDE" in that -case. The problem is seeing the warning all the time. So drop it -for this case. - -Signed-off-by: Sebastian Parschauer ---- ---- a/libparted/arch/linux.c -+++ b/libparted/arch/linux.c -@@ -937,6 +937,7 @@ init_ide (PedDevice* dev) - PedExceptionOption ex_status; - char hdi_buf[41]; - int sector_multiplier = 0; -+ int r; - - if (!_device_stat (dev, &dev_stat)) - goto error; -@@ -944,7 +945,11 @@ init_ide (PedDevice* dev) - if (!_device_open_ro (dev)) - goto error; - -- if (ioctl (arch_specific->fd, HDIO_GET_IDENTITY, &hdi)) { -+ r = ioctl (arch_specific->fd, HDIO_GET_IDENTITY, &hdi); -+ if (r && errno == EINVAL) { -+ /* silently ignore unsupported ioctl */ -+ dev->model = strdup(_("Generic IDE")); -+ } else if (r) { - ex_status = ped_exception_throw ( - PED_EXCEPTION_WARNING, - PED_EXCEPTION_IGNORE_CANCEL, diff --git a/libparted-fix-NVDIMM-partition-naming.patch b/libparted-fix-NVDIMM-partition-naming.patch index 78848f7..4fa41aa 100644 --- a/libparted-fix-NVDIMM-partition-naming.patch +++ b/libparted-fix-NVDIMM-partition-naming.patch @@ -9,11 +9,11 @@ Signed-off-by: Sebastian Parschauer libparted/arch/linux.c | 1 + 1 file changed, 1 insertion(+) -diff --git a/libparted/arch/linux.c b/libparted/arch/linux.c -index 1aef651..cf6c754 100644 ---- a/libparted/arch/linux.c -+++ b/libparted/arch/linux.c -@@ -2439,6 +2439,7 @@ _device_get_part_path (PedDevice const *dev, int num) +Index: parted-3.3/libparted/arch/linux.c +=================================================================== +--- parted-3.3.orig/libparted/arch/linux.c ++++ parted-3.3/libparted/arch/linux.c +@@ -2489,6 +2489,7 @@ _device_get_part_path (PedDevice const * dev->type == PED_DEVICE_CPQARRAY || dev->type == PED_DEVICE_DAC960 || dev->type == PED_DEVICE_NVME || diff --git a/libparted-fix-nvme-partition-naming.patch b/libparted-fix-nvme-partition-naming.patch index 43e3bc3..bcfdeb2 100644 --- a/libparted-fix-nvme-partition-naming.patch +++ b/libparted-fix-nvme-partition-naming.patch @@ -6,11 +6,11 @@ Patch-mainline: no, required to fix custom SUSE device naming libparted/arch/linux.c | 1 + 1 file changed, 1 insertion(+) -diff --git a/libparted/arch/linux.c b/libparted/arch/linux.c -index e9a694e..69176c6 100644 ---- a/libparted/arch/linux.c -+++ b/libparted/arch/linux.c -@@ -2414,6 +2414,7 @@ _device_get_part_path (PedDevice const *dev, int num) +Index: parted-3.3/libparted/arch/linux.c +=================================================================== +--- parted-3.3.orig/libparted/arch/linux.c ++++ parted-3.3/libparted/arch/linux.c +@@ -2488,6 +2488,7 @@ _device_get_part_path (PedDevice const * if (dev->type == PED_DEVICE_ATARAID || dev->type == PED_DEVICE_CPQARRAY || dev->type == PED_DEVICE_DAC960 || diff --git a/libparted-fix-starting-CHS-in-protective-MBR.patch b/libparted-fix-starting-CHS-in-protective-MBR.patch deleted file mode 100644 index 669184b..0000000 --- a/libparted-fix-starting-CHS-in-protective-MBR.patch +++ /dev/null @@ -1,30 +0,0 @@ -From: Petr Uzel -Date: Thu, 10 Mar 2016 14:18:52 +0100 -Subject: libparted: Fix starting CHS in protective MBR -References: bsc#969165 -Patch-mainline: v3.3 -Git-commit: df6770d213b60320426a3ee0bed118d063b40fc5 - -The CHS address for protective partition start in protective MBR -should be 0/0/2, according to UEFI spec (v2.6, section 5.2.1). - -* libparted/labels/gpt.c (_write_pmbr): Fix starting CHS address - -Reported by Steffen Winterfeldt in https://bugzilla.suse.com/969165 - -Signed-off-by: Petr Uzel ---- - libparted/labels/gpt.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - ---- a/libparted/labels/gpt.c -+++ b/libparted/labels/gpt.c -@@ -1143,7 +1143,7 @@ _write_pmbr (PedDevice *dev, bool pmbr_b - - pmbr->Signature = PED_CPU_TO_LE16 (MSDOS_MBR_SIGNATURE); - pmbr->PartitionRecord[0].OSType = EFI_PMBR_OSTYPE_EFI; -- pmbr->PartitionRecord[0].StartSector = 1; -+ pmbr->PartitionRecord[0].StartSector = 2; - pmbr->PartitionRecord[0].EndHead = 0xFE; - pmbr->PartitionRecord[0].EndSector = 0xFF; - pmbr->PartitionRecord[0].EndTrack = 0xFF; diff --git a/libparted-fix-udev-cookie-leak.patch b/libparted-fix-udev-cookie-leak.patch deleted file mode 100644 index 0aac0d3..0000000 --- a/libparted-fix-udev-cookie-leak.patch +++ /dev/null @@ -1,67 +0,0 @@ -From: "Brian C. Lane" -Date: Thu, 25 May 2017 09:42:23 -0700 -Subject: libparted: Fix udev cookie leak in _dm_resize_partition -References: bsc#1058667 -Patch-mainline: v3.3 -Git-commit: e7870afe3c13dcc77845d48409daa35e3e42b5fb - -The function is setting udev cookies, but not using them when waiting -for the task. This results in leaked cookies, which can eventually -exhaust the available number of semaphores. - -'dmsetup udevcookies' will show a cookie remaining afterwards, and 'ipcs -s' -will show the semaphores in use. - -Also simplified the exit so that the task is always destroyed and memory -is all freed in the same path. - -Resolves: rhbz#1455564 -Acked-by: Sebastian Parschauer ---- - libparted/arch/linux.c | 14 +++++++------- - 1 file changed, 7 insertions(+), 7 deletions(-) - ---- a/libparted/arch/linux.c -+++ b/libparted/arch/linux.c -@@ -2964,6 +2964,7 @@ _dm_resize_partition (PedDisk* disk, con - char* vol_name = NULL; - const char* dev_name = NULL; - uint32_t cookie = 0; -+ int rc = 0; - - /* Get map name from devicemapper */ - struct dm_task *task = dm_task_create (DM_DEVICE_INFO); -@@ -3004,8 +3005,9 @@ _dm_resize_partition (PedDisk* disk, con - /* device-mapper uses 512b units, not the device's sector size */ - dm_task_add_target (task, 0, part->geom.length * (disk->dev->sector_size / PED_SECTOR_SIZE_DEFAULT), - "linear", params); -- if (!dm_task_set_cookie (task, &cookie, 0)) -- goto err; -+ /* NOTE: DM_DEVICE_RELOAD doesn't generate udev events, so no cookie is needed (it will freeze). -+ * DM_DEVICE_RESUME does, so get a cookie and synchronize with udev. -+ */ - if (dm_task_run (task)) { - dm_task_destroy (task); - task = dm_task_create (DM_DEVICE_RESUME); -@@ -3014,10 +3016,8 @@ _dm_resize_partition (PedDisk* disk, con - dm_task_set_name (task, vol_name); - if (!dm_task_set_cookie (task, &cookie, 0)) - goto err; -- if (dm_task_run (task)) { -- free (params); -- free (vol_name); -- return 1; -+ if (_dm_task_run_wait (task, cookie)) { -+ rc = 1; - } - } - err: -@@ -3026,7 +3026,7 @@ err: - dm_task_destroy (task); - free (params); - free (vol_name); -- return 0; -+ return rc; - } - - #endif diff --git a/libparted-make-BLKRRPART-more-robust.patch b/libparted-make-BLKRRPART-more-robust.patch index fb2facc..50f36e2 100644 --- a/libparted-make-BLKRRPART-more-robust.patch +++ b/libparted-make-BLKRRPART-more-robust.patch @@ -5,8 +5,10 @@ Patch-mainline: no, upstream does not use BLKRRPART and leaves DASDs broken libparted/arch/linux.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) ---- a/libparted/arch/linux.c -+++ b/libparted/arch/linux.c +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 #include @@ -14,8 +16,8 @@ Patch-mainline: no, upstream does not use BLKRRPART and leaves DASDs broken +#include #include #include - #ifdef ENABLE_DEVICE_MAPPER -@@ -3102,14 +3103,15 @@ static int + #include +@@ -3242,14 +3243,15 @@ static int _kernel_reread_part_table (PedDevice* dev) { LinuxSpecific* arch_specific = LINUX_SPECIFIC (dev); @@ -34,7 +36,7 @@ Patch-mainline: no, upstream does not use BLKRRPART and leaves DASDs broken if (!retry_count) { ped_exception_throw ( -@@ -3119,10 +3121,12 @@ _kernel_reread_part_table (PedDevice* de +@@ -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)); 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 deleted file mode 100644 index 533eab3..0000000 --- a/libparted-make-sure-not-to-treat-percentages-and-cyls-as-exact.patch +++ /dev/null @@ -1,31 +0,0 @@ -From: Phillip Susi -Date: Mon, 4 Nov 2013 13:10:09 -0500 -Subject: libparted: make sure not to treat percentages as exact -Patch-mainline: v3.2, custom part from puzel still required -Git-commit: 01900e056ec250836d15b5f5c3f59a8e1454b781 - -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.2/libparted/unit.c -=================================================================== ---- parted-3.2.orig/libparted/unit.c -+++ parted-3.2/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) && unit != PED_UNIT_PERCENT) -+ 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/libparted-open-the-device-RO-and-lazily-switch-to-RW.patch b/libparted-open-the-device-RO-and-lazily-switch-to-RW.patch index f4fdcb0..f99d1a1 100644 --- a/libparted-open-the-device-RO-and-lazily-switch-to-RW.patch +++ b/libparted-open-the-device-RO-and-lazily-switch-to-RW.patch @@ -18,11 +18,11 @@ Signed-off-by: Sebastian Parschauer libparted/arch/linux.h | 1 + 2 files changed, 31 insertions(+), 3 deletions(-) -Index: parted-3.2/libparted/arch/linux.c +Index: parted-3.3/libparted/arch/linux.c =================================================================== ---- parted-3.2.orig/libparted/arch/linux.c -+++ parted-3.2/libparted/arch/linux.c -@@ -295,6 +295,9 @@ static unsigned int _device_get_partitio +--- parted-3.3.orig/libparted/arch/linux.c ++++ parted-3.3/libparted/arch/linux.c +@@ -298,6 +298,9 @@ static unsigned int _device_get_partitio static int _device_open (PedDevice* dev, int flags); static int _device_open_ro (PedDevice* dev); static int _device_close (PedDevice* dev); @@ -32,8 +32,8 @@ Index: parted-3.2/libparted/arch/linux.c static int _read_fd (int fd, char **buf) -@@ -442,6 +445,22 @@ _is_virtblk_major (int major) - return _major_type_in_devices (major, "virtblk"); +@@ -451,6 +454,22 @@ _is_blkext_major (int major) + return _major_type_in_devices (major, "blkext"); } +static void @@ -55,7 +55,7 @@ Index: parted-3.2/libparted/arch/linux.c #ifdef ENABLE_DEVICE_MAPPER static int _dm_task_run_wait (struct dm_task *task, uint32_t cookie) -@@ -1603,7 +1622,7 @@ _flush_cache (PedDevice* dev) +@@ -1678,7 +1697,7 @@ _flush_cache (PedDevice* dev) if (!name) break; if (!_partition_is_mounted_by_path (name)) { @@ -64,7 +64,7 @@ Index: parted-3.2/libparted/arch/linux.c if (fd > 0) { ioctl (fd, BLKFLSBUF); retry: -@@ -1634,7 +1653,7 @@ _device_open_ro (PedDevice* dev) +@@ -1709,7 +1728,7 @@ _device_open_ro (PedDevice* dev) static int linux_open (PedDevice* dev) { @@ -73,7 +73,7 @@ Index: parted-3.2/libparted/arch/linux.c } static int -@@ -1672,6 +1691,10 @@ retry: +@@ -1747,6 +1766,10 @@ retry: } } else { dev->read_only = 0; @@ -84,7 +84,7 @@ Index: parted-3.2/libparted/arch/linux.c } _flush_cache (dev); -@@ -1907,6 +1930,7 @@ _write_lastoddsector (PedDevice* dev, co +@@ -1984,6 +2007,7 @@ _write_lastoddsector (PedDevice* dev, co PED_ASSERT(dev != NULL); PED_ASSERT(buffer != NULL); @@ -92,7 +92,7 @@ Index: parted-3.2/libparted/arch/linux.c arch_specific = LINUX_SPECIFIC (dev); -@@ -1955,6 +1979,9 @@ linux_write (PedDevice* dev, const void* +@@ -2032,6 +2056,9 @@ linux_write (PedDevice* dev, const void* return 1; } @@ -102,7 +102,7 @@ Index: parted-3.2/libparted/arch/linux.c if (_get_linux_version() < KERNEL_VERSION (2,6,0)) { /* Kludge. This is necessary to read/write the last block of an odd-sized disk, until Linux 2.5.x kernel fixes. -@@ -2480,6 +2507,7 @@ _blkpg_part_command (PedDevice* dev, str +@@ -2570,6 +2597,7 @@ _blkpg_part_command (PedDevice* dev, str LinuxSpecific* arch_specific = LINUX_SPECIFIC (dev); struct blkpg_ioctl_arg ioctl_arg; @@ -110,10 +110,10 @@ Index: parted-3.2/libparted/arch/linux.c ioctl_arg.op = op; ioctl_arg.flags = 0; ioctl_arg.datalen = sizeof (struct blkpg_partition); -Index: parted-3.2/libparted/arch/linux.h +Index: parted-3.3/libparted/arch/linux.h =================================================================== ---- parted-3.2.orig/libparted/arch/linux.h -+++ parted-3.2/libparted/arch/linux.h +--- parted-3.3.orig/libparted/arch/linux.h ++++ parted-3.3/libparted/arch/linux.h @@ -30,6 +30,7 @@ struct _LinuxSpecific { int fd; int major; @@ -122,13 +122,13 @@ Index: parted-3.2/libparted/arch/linux.h char* dmtype; /**< device map target type */ #if defined __s390__ || defined __s390x__ unsigned int real_sector_size; -Index: parted-3.2/libparted/labels/dasd.c +Index: parted-3.3/libparted/labels/dasd.c =================================================================== ---- parted-3.2.orig/libparted/labels/dasd.c -+++ parted-3.2/libparted/labels/dasd.c -@@ -639,6 +639,10 @@ dasd_write (const PedDisk* disk) - if (disk_specific->format_type == 1) +--- parted-3.3.orig/libparted/labels/dasd.c ++++ parted-3.3/libparted/labels/dasd.c +@@ -637,6 +637,10 @@ dasd_write (const PedDisk* disk) return 1; + } + /* Ensure the device is open RW */ + char dummy[10]; /* to avoid assertion in ped_device_write */ @@ -136,4 +136,4 @@ Index: parted-3.2/libparted/labels/dasd.c + /* initialize the anchor */ fdasd_initialize_anchor(&anchor); - fdasd_get_geometry(disk->dev, &anchor, arch_specific->fd); + if (fdasd_get_geometry(disk->dev, &anchor, arch_specific->fd) == 0) diff --git a/libparted-partition-naming.patch b/libparted-partition-naming.patch index c4f433b..157e0b8 100644 --- a/libparted-partition-naming.patch +++ b/libparted-partition-naming.patch @@ -18,11 +18,11 @@ Signed-off-by: Sebastian Parschauer libparted/arch/linux.c | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) -diff --git a/libparted/arch/linux.c b/libparted/arch/linux.c -index 0f18904..cad5159 100644 ---- a/libparted/arch/linux.c -+++ b/libparted/arch/linux.c -@@ -2342,11 +2342,17 @@ _device_get_part_path (PedDevice const *dev, int num) +Index: parted-3.3/libparted/arch/linux.c +=================================================================== +--- parted-3.3.orig/libparted/arch/linux.c ++++ parted-3.3/libparted/arch/linux.c +@@ -2456,11 +2456,17 @@ _device_get_part_path (PedDevice const * result = zasprintf ("%.*s/part%d", (int) (path_len - 5), devpath, num); } else { @@ -44,8 +44,8 @@ index 0f18904..cad5159 100644 + ? "p" : ""); result = zasprintf ("%s%s%d", devpath, p, num); } - if (dev->type == PED_DEVICE_DM) -@@ -2797,7 +2803,7 @@ _dm_add_partition (PedDisk* disk, const PedPartition* part) + #ifdef ENABLE_DEVICE_MAPPER +@@ -2927,7 +2933,7 @@ _dm_add_partition (PedDisk* disk, const size_t name_len = strlen (dev_name); vol_name = zasprintf ("%s%s%d", dev_name, @@ -54,7 +54,7 @@ index 0f18904..cad5159 100644 part->num); if (vol_name == NULL) goto err; -@@ -2870,7 +2876,7 @@ _dm_resize_partition (PedDisk* disk, const PedPartition* part) +@@ -3004,7 +3010,7 @@ _dm_resize_partition (PedDisk* disk, con size_t name_len = strlen (dev_name); vol_name = zasprintf ("%s%s%d", dev_name, diff --git a/libparted-set-swap-flag-on-GPT-partitions.patch b/libparted-set-swap-flag-on-GPT-partitions.patch deleted file mode 100644 index 011b408..0000000 --- a/libparted-set-swap-flag-on-GPT-partitions.patch +++ /dev/null @@ -1,213 +0,0 @@ -From: Arvin Schnell -Date: Thu, 22 Dec 2016 14:36:43 -0800 -Subject: libparted: set swap flag on GPT partitions -References: fate#314888, bsc#1044536 -Patch-mainline: v3.3 -Git-commit: c7ce5d48f6facccf617467d79c68ccce0bc27dcd - -The filesystem type is still detected as befor, but now setting the -'swap' flag will set the partition GUID to PARTITION_SWAP_GUID. - -Signed-off-by: Brian C. Lane -[sparschauer: Drop setting PARTITION_SWAP_GUID when the FS is swap] -Signed-off-by: Sebastian Parschauer ---- - libparted/labels/gpt.c | 42 +++++++++++++++++++++++++++++++++++++++--- - 1 file changed, 39 insertions(+), 3 deletions(-) - ---- a/libparted/labels/gpt.c -+++ b/libparted/labels/gpt.c -@@ -290,6 +290,7 @@ typedef struct _GPTPartitionData - efi_char16_t name[37]; - char *translated_name; - int lvm; -+ int swap; - int raid; - int boot; - int bios_grub; -@@ -818,7 +819,8 @@ _parse_part_entry (PedDisk *disk, GuidPa - gpt_part_data->name[i] = 0; - gpt_part_data->translated_name = 0; - -- gpt_part_data->lvm = gpt_part_data->raid -+ gpt_part_data->lvm = gpt_part_data->swap -+ = gpt_part_data->raid - = gpt_part_data->boot = gpt_part_data->hp_service - = gpt_part_data->hidden = gpt_part_data->msftres - = gpt_part_data->msftdata -@@ -841,6 +843,8 @@ _parse_part_entry (PedDisk *disk, GuidPa - gpt_part_data->raid = 1; - else if (!guid_cmp (gpt_part_data->type, PARTITION_LVM_GUID)) - gpt_part_data->lvm = 1; -+ else if (!guid_cmp (gpt_part_data->type, PARTITION_SWAP_GUID)) -+ gpt_part_data->swap = 1; - else if (!guid_cmp (gpt_part_data->type, PARTITION_HPSERVICE_GUID)) - gpt_part_data->hp_service = 1; - else if (!guid_cmp (gpt_part_data->type, PARTITION_MSFT_RESERVED_GUID)) -@@ -1361,6 +1365,7 @@ gpt_partition_new (const PedDisk *disk, - - gpt_part_data->type = PARTITION_LINUX_DATA_GUID; - gpt_part_data->lvm = 0; -+ gpt_part_data->swap = 0; - gpt_part_data->raid = 0; - gpt_part_data->boot = 0; - gpt_part_data->bios_grub = 0; -@@ -1449,6 +1454,11 @@ gpt_partition_set_system (PedPartition * - gpt_part_data->type = PARTITION_LVM_GUID; - return 1; - } -+ if (gpt_part_data->swap) -+ { -+ gpt_part_data->type = PARTITION_SWAP_GUID; -+ return 1; -+ } - if (gpt_part_data->raid) - { - gpt_part_data->type = PARTITION_RAID_GUID; -@@ -1513,11 +1523,6 @@ gpt_partition_set_system (PedPartition * - gpt_part_data->type = PARTITION_APPLE_HFS_GUID; - return 1; - } -- if (strstr (fs_type->name, "swap")) -- { -- gpt_part_data->type = PARTITION_SWAP_GUID; -- return 1; -- } - } - - gpt_part_data->type = PARTITION_LINUX_DATA_GUID; -@@ -1636,6 +1641,7 @@ gpt_partition_set_flag (PedPartition *pa - if (state) - gpt_part_data->raid - = gpt_part_data->lvm -+ = gpt_part_data->swap - = gpt_part_data->bios_grub - = gpt_part_data->hp_service - = gpt_part_data->msftres -@@ -1650,6 +1656,7 @@ gpt_partition_set_flag (PedPartition *pa - if (state) - gpt_part_data->raid - = gpt_part_data->lvm -+ = gpt_part_data->swap - = gpt_part_data->boot - = gpt_part_data->hp_service - = gpt_part_data->msftres -@@ -1664,6 +1671,7 @@ gpt_partition_set_flag (PedPartition *pa - if (state) - gpt_part_data->boot - = gpt_part_data->lvm -+ = gpt_part_data->swap - = gpt_part_data->bios_grub - = gpt_part_data->hp_service - = gpt_part_data->msftres -@@ -1677,6 +1685,22 @@ gpt_partition_set_flag (PedPartition *pa - gpt_part_data->lvm = state; - if (state) - gpt_part_data->boot -+ = gpt_part_data->swap -+ = gpt_part_data->raid -+ = gpt_part_data->bios_grub -+ = gpt_part_data->hp_service -+ = gpt_part_data->msftres -+ = gpt_part_data->msftdata -+ = gpt_part_data->msftrecv -+ = gpt_part_data->prep -+ = gpt_part_data->irst -+ = gpt_part_data->atvrecv = 0; -+ return gpt_partition_set_system (part, part->fs_type); -+ case PED_PARTITION_SWAP: -+ gpt_part_data->swap = state; -+ if (state) -+ gpt_part_data->boot -+ = gpt_part_data->lvm - = gpt_part_data->raid - = gpt_part_data->bios_grub - = gpt_part_data->hp_service -@@ -1693,6 +1717,7 @@ gpt_partition_set_flag (PedPartition *pa - gpt_part_data->boot - = gpt_part_data->raid - = gpt_part_data->lvm -+ = gpt_part_data->swap - = gpt_part_data->bios_grub - = gpt_part_data->msftres - = gpt_part_data->msftdata -@@ -1707,6 +1732,7 @@ gpt_partition_set_flag (PedPartition *pa - gpt_part_data->boot - = gpt_part_data->raid - = gpt_part_data->lvm -+ = gpt_part_data->swap - = gpt_part_data->bios_grub - = gpt_part_data->hp_service - = gpt_part_data->msftdata -@@ -1721,6 +1747,7 @@ gpt_partition_set_flag (PedPartition *pa - gpt_part_data->boot - = gpt_part_data->raid - = gpt_part_data->lvm -+ = gpt_part_data->swap - = gpt_part_data->bios_grub - = gpt_part_data->hp_service - = gpt_part_data->msftres -@@ -1739,6 +1766,7 @@ gpt_partition_set_flag (PedPartition *pa - gpt_part_data->boot - = gpt_part_data->raid - = gpt_part_data->lvm -+ = gpt_part_data->swap - = gpt_part_data->bios_grub - = gpt_part_data->hp_service - = gpt_part_data->msftdata -@@ -1753,6 +1781,7 @@ gpt_partition_set_flag (PedPartition *pa - gpt_part_data->boot - = gpt_part_data->raid - = gpt_part_data->lvm -+ = gpt_part_data->swap - = gpt_part_data->bios_grub - = gpt_part_data->hp_service - = gpt_part_data->msftres -@@ -1766,6 +1795,7 @@ gpt_partition_set_flag (PedPartition *pa - gpt_part_data->boot - = gpt_part_data->raid - = gpt_part_data->lvm -+ = gpt_part_data->swap - = gpt_part_data->bios_grub - = gpt_part_data->hp_service - = gpt_part_data->msftres -@@ -1779,6 +1809,7 @@ gpt_partition_set_flag (PedPartition *pa - gpt_part_data->boot - = gpt_part_data->raid - = gpt_part_data->lvm -+ = gpt_part_data->swap - = gpt_part_data->bios_grub - = gpt_part_data->hp_service - = gpt_part_data->msftres -@@ -1793,7 +1824,6 @@ gpt_partition_set_flag (PedPartition *pa - case PED_PARTITION_LEGACY_BOOT: - gpt_part_data->legacy_boot = state; - return 1; -- case PED_PARTITION_SWAP: - case PED_PARTITION_ROOT: - case PED_PARTITION_LBA: - default: -@@ -1839,6 +1869,7 @@ gpt_partition_get_flag (const PedPartiti - case PED_PARTITION_IRST: - return gpt_part_data->irst; - case PED_PARTITION_SWAP: -+ return gpt_part_data->swap; - case PED_PARTITION_LBA: - case PED_PARTITION_ROOT: - default: -@@ -1855,6 +1886,7 @@ gpt_partition_is_flag_available (const P - { - case PED_PARTITION_RAID: - case PED_PARTITION_LVM: -+ case PED_PARTITION_SWAP: - case PED_PARTITION_BOOT: - case PED_PARTITION_BIOS_GRUB: - case PED_PARTITION_HPSERVICE: -@@ -1868,7 +1900,6 @@ gpt_partition_is_flag_available (const P - case PED_PARTITION_IRST: - case PED_PARTITION_ESP: - return 1; -- case PED_PARTITION_SWAP: - case PED_PARTITION_ROOT: - case PED_PARTITION_LBA: - default: diff --git a/libparted-sysmacros.patch b/libparted-sysmacros.patch deleted file mode 100644 index e7cd7ab..0000000 --- a/libparted-sysmacros.patch +++ /dev/null @@ -1,23 +0,0 @@ -From: "Richard W.M. Jones" -Date: Sat, 24 Mar 2018 17:37:02 +0000 -Subject: linux: Include for major() macro. -Patch-mainline: v3.3 -Git-commit: ba5e0451b51c983e40afd123b6e0d3eddb55e610 - -Since glibc 2.27 this header is required. - -Acked-by: Sebastian Parschauer ---- - libparted/arch/linux.c | 1 + - 1 file changed, 1 insertion(+) - ---- a/libparted/arch/linux.c -+++ b/libparted/arch/linux.c -@@ -42,6 +42,7 @@ - #include - #include - #include -+#include - #ifdef ENABLE_DEVICE_MAPPER - #include - #endif diff --git a/libparted-use-BLKRRPART-for-DASD.patch.patch b/libparted-use-BLKRRPART-for-DASD.patch.patch index 83d823f..2e8681c 100644 --- a/libparted-use-BLKRRPART-for-DASD.patch.patch +++ b/libparted-use-BLKRRPART-for-DASD.patch.patch @@ -11,11 +11,11 @@ and some fixups on top libparted/arch/linux.c | 50 ++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 41 insertions(+), 9 deletions(-) -Index: parted-3.2/libparted/arch/linux.c +Index: parted-3.3/libparted/arch/linux.c =================================================================== ---- parted-3.2.orig/libparted/arch/linux.c -+++ parted-3.2/libparted/arch/linux.c -@@ -3097,6 +3097,34 @@ _disk_sync_part_table (PedDisk* disk) +--- parted-3.3.orig/libparted/arch/linux.c ++++ parted-3.3/libparted/arch/linux.c +@@ -3239,6 +3239,34 @@ _disk_sync_part_table (PedDisk* disk) } static int @@ -50,19 +50,18 @@ Index: parted-3.2/libparted/arch/linux.c _have_blkpg () { static int have_blkpg = -1; -@@ -3114,15 +3142,19 @@ static int - linux_disk_commit (PedDisk* disk) +@@ -3257,14 +3285,19 @@ linux_disk_commit (PedDisk* disk) { 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 ()); - -- /* 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; +- 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 @@ -70,12 +69,12 @@ Index: parted-3.2/libparted/arch/linux.c + * 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); ++ 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; ++ assert(_have_blkpg()); ++ if (!_disk_sync_part_table(disk)) ++ return 0; } return 1; diff --git a/libparted-use-BLKRRPART-only-when-needed.patch b/libparted-use-BLKRRPART-only-when-needed.patch index 2425ca9..d1cfd7a 100644 --- a/libparted-use-BLKRRPART-only-when-needed.patch +++ b/libparted-use-BLKRRPART-only-when-needed.patch @@ -19,10 +19,10 @@ Signed-off-by: Sebastian Parschauer libparted/disk.c | 15 +++++++++++++-- 3 files changed, 21 insertions(+), 8 deletions(-) -diff --git a/include/parted/disk.in.h b/include/parted/disk.in.h -index b42e7cf..ac57d68 100644 ---- a/include/parted/disk.in.h -+++ b/include/parted/disk.in.h +Index: parted-3.3/include/parted/disk.in.h +=================================================================== +--- parted-3.3.orig/include/parted/disk.in.h ++++ parted-3.3/include/parted/disk.in.h @@ -195,6 +195,7 @@ struct _PedDisk { int update_mode; /**< mode without free/metadata partitions, for easier @@ -31,14 +31,15 @@ index b42e7cf..ac57d68 100644 }; struct _PedDiskOps { -diff --git a/libparted/arch/linux.c b/libparted/arch/linux.c -index 461c095..d7d37e7 100644 ---- a/libparted/arch/linux.c -+++ b/libparted/arch/linux.c -@@ -3264,14 +3264,15 @@ static int +Index: parted-3.3/libparted/arch/linux.c +=================================================================== +--- parted-3.3.orig/libparted/arch/linux.c ++++ parted-3.3/libparted/arch/linux.c +@@ -3324,15 +3324,15 @@ static int linux_disk_commit (PedDisk* disk) { 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 @@ -52,16 +53,16 @@ index 461c095..d7d37e7 100644 + * and grok the partition table. */ /* Work around kernel dasd problem so we really do BLKRRPART */ -- if (disk->dev->type == PED_DEVICE_DASD) -+ if (disk->dev->type == PED_DEVICE_DASD && disk->needs_blkrrpart) - return _kernel_reread_part_table(disk->dev); +- if (disk->dev->type == PED_DEVICE_DASD) ++ if (disk->dev->type == PED_DEVICE_DASD && disk->needs_blkrrpart) + return _kernel_reread_part_table(disk->dev); - assert(_have_blkpg()); -diff --git a/libparted/disk.c b/libparted/disk.c -index 18cee12..03f8548 100644 ---- a/libparted/disk.c -+++ b/libparted/disk.c -@@ -406,6 +406,7 @@ _ped_disk_alloc (const PedDevice* dev, const PedDiskType* disk_type) + assert(_have_blkpg()); +Index: parted-3.3/libparted/disk.c +=================================================================== +--- parted-3.3.orig/libparted/disk.c ++++ parted-3.3/libparted/disk.c +@@ -407,6 +407,7 @@ _ped_disk_alloc (const PedDevice* dev, c disk->update_mode = 1; disk->part_list = NULL; disk->needs_clobber = 0; @@ -69,7 +70,7 @@ index 18cee12..03f8548 100644 return disk; error: -@@ -1733,8 +1734,12 @@ _disk_raw_remove (PedDisk* disk, PedPartition* part) +@@ -1734,8 +1735,12 @@ _disk_raw_remove (PedDisk* disk, PedPart if (part->prev) { part->prev->next = part->next; @@ -83,7 +84,7 @@ index 18cee12..03f8548 100644 } else { if (part->type & PED_PARTITION_LOGICAL) { ped_disk_extended_partition (disk)->part_list -@@ -1742,8 +1747,12 @@ _disk_raw_remove (PedDisk* disk, PedPartition* part) +@@ -1743,8 +1748,12 @@ _disk_raw_remove (PedDisk* disk, PedPart } else { disk->part_list = part->next; } @@ -97,7 +98,7 @@ index 18cee12..03f8548 100644 } return 1; -@@ -1773,6 +1782,8 @@ _disk_raw_add (PedDisk* disk, PedPartition* part) +@@ -1774,6 +1783,8 @@ _disk_raw_add (PedDisk* disk, PedPartiti } if (walk) { diff --git a/more-reliable-informing-the-kernel.patch b/more-reliable-informing-the-kernel.patch index feb6e9b..9359a78 100644 --- a/more-reliable-informing-the-kernel.patch +++ b/more-reliable-informing-the-kernel.patch @@ -15,11 +15,11 @@ It consists of 2 quite unrelated parts: parted/parted.c | 28 +++++++++++++++++++++++++++- 2 files changed, 28 insertions(+), 2 deletions(-) -Index: parted-3.2/libparted/arch/linux.c +Index: parted-3.3/libparted/arch/linux.c =================================================================== ---- parted-3.2.orig/libparted/arch/linux.c -+++ parted-3.2/libparted/arch/linux.c -@@ -3011,7 +3011,7 @@ _disk_sync_part_table (PedDisk* disk) +--- parted-3.3.orig/libparted/arch/linux.c ++++ parted-3.3/libparted/arch/linux.c +@@ -3153,7 +3153,7 @@ _disk_sync_part_table (PedDisk* disk) /* Attempt to remove the partition, retrying for up to max_sleep_seconds upon any failure due to EBUSY. */ unsigned int sleep_microseconds = 10000; @@ -28,11 +28,11 @@ Index: parted-3.2/libparted/arch/linux.c unsigned int n_sleep = (max_sleep_seconds * 1000000 / sleep_microseconds); do { -Index: parted-3.2/parted/parted.c +Index: parted-3.3/parted/parted.c =================================================================== ---- parted-3.2.orig/parted/parted.c -+++ parted-3.2/parted/parted.c -@@ -266,6 +266,32 @@ _disk_warn_loss (PedDisk* disk) +--- parted-3.3.orig/parted/parted.c ++++ parted-3.3/parted/parted.c +@@ -267,6 +267,32 @@ _disk_warn_loss (PedDisk* disk) disk->dev->path) == PED_EXCEPTION_YES; } @@ -65,7 +65,7 @@ Index: parted-3.2/parted/parted.c /* This function changes "sector" to "new_sector" if the new value lies * within the required range. */ -@@ -1735,7 +1761,7 @@ do_set (PedDevice** dev, PedDisk **diskp +@@ -1791,7 +1817,7 @@ do_set (PedDevice** dev, PedDisk **diskp if (!ped_partition_set_flag (part, flag, state)) goto error; diff --git a/parted-2.4-ncursesw6.patch b/parted-2.4-ncursesw6.patch index 57af31d..1484782 100644 --- a/parted-2.4-ncursesw6.patch +++ b/parted-2.4-ncursesw6.patch @@ -5,11 +5,11 @@ Patch-mainline: no, custom SUSE patch configure.ac | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) -Index: parted-3.2/configure.ac +Index: parted-3.3/configure.ac =================================================================== ---- parted-3.2.orig/configure.ac -+++ parted-3.2/configure.ac -@@ -165,7 +165,8 @@ AM_CPPFLAGS="$AM_CPPFLAGS -D_REENTRANT" +--- parted-3.3.orig/configure.ac ++++ parted-3.3/configure.ac +@@ -151,7 +151,8 @@ AM_CPPFLAGS="$AM_CPPFLAGS -D_REENTRANT" dnl Check for programs. AC_ISC_POSIX @@ -19,7 +19,7 @@ Index: parted-3.2/configure.ac AC_PROG_GCC_TRADITIONAL AM_PROG_CC_C_O -@@ -377,7 +378,7 @@ dnl Check for termcap +@@ -331,7 +332,7 @@ dnl Check for termcap if test "$with_readline" = yes; then OLD_LIBS="$LIBS" LIBS="" diff --git a/parted-3.2.tar.xz b/parted-3.2.tar.xz deleted file mode 100644 index 4a98ed0..0000000 --- a/parted-3.2.tar.xz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:858b589c22297cacdf437f3baff6f04b333087521ab274f7ab677cb8c6bb78e4 -size 1655244 diff --git a/parted-3.2.tar.xz.sig b/parted-3.2.tar.xz.sig deleted file mode 100644 index a073ec8..0000000 --- a/parted-3.2.tar.xz.sig +++ /dev/null @@ -1,11 +0,0 @@ ------BEGIN PGP SIGNATURE----- -Version: GnuPG v1 - -iQEcBAABCgAGBQJT1xMSAAoJEI5FoCIzSKrwifgH/3RPcmdiLuBG1CFhSwvFMDE4 -0+cOupMjmPvLXjjj1wVD1svj5MF5R/Hejd2GzOfZZ1OOZD/1asgBCteh3RLXvj00 -gE8vTv9MsYeO6C3IiNNy8KwAi1XMDD/75WyOxgStTZuDaspczyRxtYgHUk/vHRdf -btpkf2fuzSX4EskU5U4QetJgjmVUee0bGafC1CGLdxKTwxY2At4uf9TX+Y4us8Ym -EEqdQyeF8OV/wcGJq8aRkbZbHPVtI1id4IS8X7RxTmJtRHp13/WcYo/vkQUm1BUt -RFFeCCE65PxY33jYSYIJCSrfr1LLvzM2LCfEXNduLXUiKwz54/72j5HBkjeKYps= -=vEMW ------END PGP SIGNATURE----- diff --git a/parted-3.3.tar.xz b/parted-3.3.tar.xz new file mode 100644 index 0000000..4280c21 --- /dev/null +++ b/parted-3.3.tar.xz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:57e2b4bd87018625c515421d4524f6e3b55175b472302056391c5f7eccb83d44 +size 1757432 diff --git a/parted-3.3.tar.xz.sig b/parted-3.3.tar.xz.sig new file mode 100644 index 0000000..b07480f --- /dev/null +++ b/parted-3.3.tar.xz.sig @@ -0,0 +1,11 @@ +-----BEGIN PGP SIGNATURE----- + +iQFDBAABCgAtFiEEtMa0UeT6i0IyyhkeEX6MFo7+On8FAl2fxMwPHGJjbEByZWRo +YXQuY29tAAoJEBF+jBaO/jp/bygH/ReO2REK9e3YvbNmJmI4jRsiS6KHJ7ufVHAW +DwFHE6TvD8c0EG5RcZNwJUNB2rLUs+RlZCVxU/qzN+nPlZJNXVqjpIZOwNn9H9op +vqLk/Ja6FzvIDPeyes3HTZFojdLZSLvJ5WUnFf/ZKiiJCM2Qgxy3bp/mmBL9niQb +jEr3UUHzVxfMHBFIqnY81+HriBZGCD+vmcKPZ5iMtb4LhHl+WeiFXByS3j4ZrVcg +NvnyjDQgPJj7oKFGgTfbaZs/d9LCE9XAudYUUTszlEajN2JsNEud4jse19EHeLzd +Gd7gR4NFK0k1qhOvi9GaBReMiW7YzX6xey3oxBKdNRHmu8wGhSA= +=i81F +-----END PGP SIGNATURE----- diff --git a/parted-add-ignore-busy-option.patch b/parted-add-ignore-busy-option.patch index 406377b..5d72971 100644 --- a/parted-add-ignore-busy-option.patch +++ b/parted-add-ignore-busy-option.patch @@ -19,10 +19,10 @@ Signed-off-by: Sebastian Parschauer parted/parted.c | 16 ++++++++++++++-- 2 files changed, 17 insertions(+), 2 deletions(-) -diff --git a/doc/C/parted.8 b/doc/C/parted.8 -index e2a24dc..ff01162 100644 ---- a/doc/C/parted.8 -+++ b/doc/C/parted.8 +Index: parted-3.3/doc/C/parted.8 +=================================================================== +--- parted-3.3.orig/doc/C/parted.8 ++++ parted-3.3/doc/C/parted.8 @@ -30,6 +30,9 @@ never prompts for user intervention .B -v, --version displays the version @@ -33,11 +33,11 @@ index e2a24dc..ff01162 100644 .B --wipesignatures mkpart wipes the superblock signatures from the disk region where it is about to create the partition -diff --git a/parted/parted.c b/parted/parted.c -index 3d7ec4b..3cc8f77 100644 ---- a/parted/parted.c -+++ b/parted/parted.c -@@ -76,7 +76,8 @@ static int MEGABYTE_SECTORS (PedDevice* dev) +Index: parted-3.3/parted/parted.c +=================================================================== +--- parted-3.3.orig/parted/parted.c ++++ parted-3.3/parted/parted.c +@@ -76,7 +76,8 @@ static int MEGABYTE_SECTORS (PedDevice* enum { PRETEND_INPUT_TTY = CHAR_MAX + 1, @@ -55,7 +55,7 @@ index 3d7ec4b..3cc8f77 100644 {"wipesignatures", 0, NULL, WIPESIGNATURES}, {"-pretend-input-tty", 0, NULL, PRETEND_INPUT_TTY}, {NULL, 0, NULL, 0} -@@ -130,10 +132,13 @@ static const char *const options_help [][2] = { +@@ -130,10 +132,13 @@ static const char *const options_help [] {"script", N_("never prompts for user intervention")}, {"version", N_("displays the version")}, {"align=[none|cyl|min|opt]", N_("alignment for new partitions")}, @@ -77,7 +77,7 @@ index 3d7ec4b..3cc8f77 100644 static const char* number_msg = N_( "NUMBER is the partition number used by Linux. On MS-DOS disk labels, the " -@@ -513,12 +519,17 @@ print_options_help () +@@ -514,12 +520,17 @@ print_options_help () { int i; @@ -96,7 +96,7 @@ index 3d7ec4b..3cc8f77 100644 } int -@@ -2244,6 +2255,7 @@ while (1) +@@ -2299,6 +2310,7 @@ while (1) alignment = XARGMATCH ("--align", optarg, align_args, align_types); break; diff --git a/parted-check-the-name-of-partition-first-when-to-nam.patch b/parted-check-the-name-of-partition-first-when-to-nam.patch deleted file mode 100644 index 1056f96..0000000 --- a/parted-check-the-name-of-partition-first-when-to-nam.patch +++ /dev/null @@ -1,40 +0,0 @@ -From d7a2ff17b15842bf9a3de65ca1ba577bdf568e79 Mon Sep 17 00:00:00 2001 -From: Wang Dong -Date: Fri, 24 Mar 2017 03:11:08 +0100 -Subject: [PATCH] parted: check the name of partition first when to name a - partition - -The previous function works well for the labels supporting naming -partition, but not for these which don't. If the disk label does not -support partition naming, two exceptions will be raised. Even after the first -error indicates it does not support name, parted yet asks user for -name in iteractive mode. - -First check if the disk label supports partition naming and if it -does, it will continue; otherwise, it will stop and raise an -exception. - -Signed-off-by: Wang Dong -Signed-off-by: Hendrik Brueckner ---- - parted/parted.c | 7 +++++++ - 1 file changed, 7 insertions(+) - -Index: parted-3.2/parted/parted.c -=================================================================== ---- parted-3.2.orig/parted/parted.c -+++ parted-3.2/parted/parted.c -@@ -930,6 +930,13 @@ do_name (PedDevice** dev, PedDisk** disk - if (!diskp) - goto error; - -+ if (!ped_disk_type_check_feature((*diskp)->type, PED_DISK_TYPE_PARTITION_NAME)) { -+ ped_exception_throw (PED_EXCEPTION_ERROR, PED_EXCEPTION_CANCEL, -+ _("%s disk labels do not support partition name."), -+ (*diskp)->type->name); -+ goto error; -+ } -+ - if (!command_line_get_partition (_("Partition number?"), *diskp, &part)) - goto error; - diff --git a/parted-dont-crash-in-disk_set-when-disk-label-not-found.patch b/parted-dont-crash-in-disk_set-when-disk-label-not-found.patch deleted file mode 100644 index 5f4fe6c..0000000 --- a/parted-dont-crash-in-disk_set-when-disk-label-not-found.patch +++ /dev/null @@ -1,39 +0,0 @@ -From 624a8b14af7d358782ecc12627c84da72c28aeff Mon Sep 17 00:00:00 2001 -From: Phillip Susi -Date: Tue, 13 Jan 2015 11:05:48 -0500 -Subject: [PATCH] parted: don't crash in disk_set when disk label not found - -Due to a typeo in commit 7eac058 "parted: don't reload partition -table on every command", the disk_set command would crash if -a disk label was not found. ---- - NEWS | 2 ++ - parted/parted.c | 2 +- - 2 files changed, 3 insertions(+), 1 deletion(-) - -Index: parted-3.2/NEWS -=================================================================== ---- parted-3.2.orig/NEWS -+++ parted-3.2/NEWS -@@ -162,6 +162,8 @@ GNU parted NEWS - - ** Bug Fixes - -+ Don't crash in the disk_set command when a disk label is not found -+ - libparted-fs-resize: Prevent crash resizing FAT16 file systems. - - -Index: parted-3.2/parted/parted.c -=================================================================== ---- parted-3.2.orig/parted/parted.c -+++ parted-3.2/parted/parted.c -@@ -1708,7 +1708,7 @@ do_disk_set (PedDevice** dev, PedDisk** - - if (!*diskp) - *diskp = ped_disk_new (*dev); -- if (!diskp) -+ if (!*diskp) - goto error; - - if (!command_line_get_disk_flag (_("Flag to Invert?"), *diskp, &flag)) diff --git a/parted-escape-printed-device-path.patch b/parted-escape-printed-device-path.patch index b6425d7..bd784d3 100644 --- a/parted-escape-printed-device-path.patch +++ b/parted-escape-printed-device-path.patch @@ -21,9 +21,11 @@ Signed-off-by: Sebastian Parschauer parted/parted.c | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) ---- a/parted/parted.c -+++ b/parted/parted.c -@@ -1038,6 +1038,30 @@ _print_disk_geometry (const PedDevice *d +Index: parted-3.3/parted/parted.c +=================================================================== +--- parted-3.3.orig/parted/parted.c ++++ parted-3.3/parted/parted.c +@@ -1053,6 +1053,30 @@ _print_disk_geometry (const PedDevice *d free (cyl_size); } @@ -54,7 +56,7 @@ Signed-off-by: Sebastian Parschauer static void _print_disk_info (const PedDevice *dev, const PedDisk *diskp) { -@@ -1058,6 +1082,8 @@ _print_disk_info (const PedDevice *dev, +@@ -1073,6 +1097,8 @@ _print_disk_info (const PedDevice *dev, char *disk_flags = disk_print_flags (diskp); if (opt_machine_mode) { @@ -63,7 +65,7 @@ Signed-off-by: Sebastian Parschauer switch (default_unit) { case PED_UNIT_CHS: puts ("CHS;"); break; -@@ -1068,9 +1094,10 @@ _print_disk_info (const PedDevice *dev, +@@ -1083,9 +1109,10 @@ _print_disk_info (const PedDevice *dev, } printf ("%s:%s:%s:%lld:%lld:%s:%s:%s;\n", diff --git a/parted-fatresize-autoconf.patch b/parted-fatresize-autoconf.patch index a8063fe..751ff62 100644 --- a/parted-fatresize-autoconf.patch +++ b/parted-fatresize-autoconf.patch @@ -17,10 +17,10 @@ Upstream: https://github.com/ya-mouse/fatresize configure.ac | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) -Index: parted-3.1/Makefile.am +Index: parted-3.3/Makefile.am =================================================================== ---- parted-3.1.orig/Makefile.am -+++ parted-3.1/Makefile.am +--- parted-3.3.orig/Makefile.am ++++ parted-3.3/Makefile.am @@ -1,5 +1,5 @@ ACLOCAL_AMFLAGS = -I m4 -SUBDIRS = po lib include libparted parted partprobe doc debug tests @@ -28,12 +28,12 @@ Index: parted-3.1/Makefile.am EXTRA_DIST = \ .version \ -Index: parted-3.1/configure.ac +Index: parted-3.3/configure.ac =================================================================== ---- parted-3.1.orig/configure.ac -+++ parted-3.1/configure.ac -@@ -610,6 +610,7 @@ libparted/tests/Makefile - libparted.pc +--- parted-3.3.orig/configure.ac ++++ parted-3.3/configure.ac +@@ -571,6 +571,7 @@ libparted.pc + libparted-fs-resize.pc parted/Makefile partprobe/Makefile +fatresize/Makefile diff --git a/parted-fix-crash-due-to-improper-partition-number-in.patch b/parted-fix-crash-due-to-improper-partition-number-in.patch deleted file mode 100644 index 73097ba..0000000 --- a/parted-fix-crash-due-to-improper-partition-number-in.patch +++ /dev/null @@ -1,94 +0,0 @@ -From 149f009c3b4ab6bac8059b48142a1c3f698c8e53 Mon Sep 17 00:00:00 2001 -From: Wang Dong -Date: Fri, 23 Dec 2016 06:53:36 +0100 -Subject: [PATCH] parted: fix crash due to improper partition number input - -When the user makes a new partition, if parted fails to add the -partition to disk, it jumps to wrong error label. In this -situation, this new partition actually is not a node in disk -data structure. But in the wrong error label, it pretends this -is a node and removes it as a list node, leading to other -partition in this disk deleted. This might lead to a memory leak. -Because if there are other partitions, it just removes them from -list without releasing the resource. And this also leads to different -disk information between memory and device. This is confusing. - -But when the new partition is added to disk successfully and if -any operations followed fail, this partition should be removed from -disk and destroyed. - -Signed-off-by: Wang Dong -Signed-off-by: Hendrik Brueckner ---- - parted/ui.c | 26 ++++++++++++++++++++++---- - 1 file changed, 22 insertions(+), 4 deletions(-) - -Index: parted-3.2/parted/ui.c -=================================================================== ---- parted-3.2.orig/parted/ui.c -+++ parted-3.2/parted/ui.c -@@ -29,6 +29,8 @@ - #include - #include - #include -+#include -+#include - - #include "command.h" - #include "strlist.h" -@@ -912,16 +914,34 @@ command_line_get_integer (const char* pr - { - char def_str [10]; - char* input; -- int valid; -+ long ret; - - snprintf (def_str, 10, "%d", *value); - input = command_line_get_word (prompt, *value ? def_str : NULL, - NULL, 1); - if (!input) - return 0; -- valid = sscanf (input, "%d", value); -+ -+ errno = 0; -+ -+ if (strstr(input, "0x") == input) -+ ret = strtol (input, (char**) NULL, 16); -+ else -+ ret = strtol (input, (char**) NULL, 10); -+ if (errno) -+ goto error; -+ -+ if ((ret > INT_MAX) || (ret < INT_MIN)) -+ goto error; -+ else -+ *value = (int) ret; -+ - free (input); -- return valid; -+ return 1; -+ -+error: -+ free (input); -+ return 0; - } - - int -@@ -1031,6 +1051,7 @@ command_line_get_partition (const char* - PedPartition** value) - { - PedPartition* part; -+ int ret; - - /* Flawed logic, doesn't seem to work?! - check = ped_disk_next_partition (disk, part); -@@ -1047,7 +1068,8 @@ command_line_get_partition (const char* - */ - int num = (*value) ? (*value)->num : 0; - -- if (!command_line_get_integer (prompt, &num)) { -+ ret = command_line_get_integer (prompt, &num); -+ if ((!ret) || (num < 0)) { - ped_exception_throw (PED_EXCEPTION_ERROR, - PED_EXCEPTION_CANCEL, - _("Expecting a partition number.")); diff --git a/parted-fix-end_input-usage.patch b/parted-fix-end_input-usage.patch new file mode 100644 index 0000000..d9eeff2 --- /dev/null +++ b/parted-fix-end_input-usage.patch @@ -0,0 +1,31 @@ +From: Brian C. Lane +Date: Tue Apr 23 13:52:25 2019 -0700 +Subject: Fix end_input usage in do_resizepart +Patch-mainline: v4.4 +Git-commit: ca845aeeddb17343c9289816833ca352f7c0d87b + +Fix end_input usage in do_resizepart + +It needs to be set to NULL, since it may not get set by the call to +command_line_get_sector + +Index: parted-3.3/parted/parted.c +=================================================================== +--- parted-3.3.orig/parted/parted.c ++++ parted-3.3/parted/parted.c +@@ -1667,6 +1667,7 @@ do_resizepart (PedDevice** dev, PedDisk* + const int end_idx = 2; + const bool danger_if_busy = false; + int rc = 0; ++ char* end_input = NULL; + + if (!disk) { + disk = ped_disk_new (*dev); +@@ -1688,7 +1689,6 @@ do_resizepart (PedDevice** dev, PedDisk* + + start = part->geom.start; + end = oldend = part->geom.end; +- char *end_input; + if (!command_line_get_sector (_("End?"), *dev, &end, &range_end, &end_input)) + goto error; + _adjust_end_if_iec(&start, &end, range_end, end_input); diff --git a/parted-fix-resizepart-and-rm-command.patch b/parted-fix-resizepart-and-rm-command.patch index ae66155..1dddebc 100644 --- a/parted-fix-resizepart-and-rm-command.patch +++ b/parted-fix-resizepart-and-rm-command.patch @@ -29,11 +29,11 @@ Signed-off-by: Sebastian Parschauer parted/parted.c | 39 ++++++++++++++++++++++++++++++++------- 2 files changed, 36 insertions(+), 7 deletions(-) -diff --git a/parted/parted.c b/parted/parted.c -index 3cc8f77..2e31659 100644 ---- a/parted/parted.c -+++ b/parted/parted.c -@@ -228,13 +228,19 @@ _timer_handler (PedTimer* timer, void* context) +Index: parted-3.3/parted/parted.c +=================================================================== +--- parted-3.3.orig/parted/parted.c ++++ parted-3.3/parted/parted.c +@@ -229,13 +229,19 @@ _timer_handler (PedTimer* timer, void* c } static int @@ -55,7 +55,7 @@ index 3cc8f77..2e31659 100644 PED_EXCEPTION_WARNING, PED_EXCEPTION_YES_NO, _("Partition %s is being used. Are you sure you " \ -@@ -1634,6 +1640,11 @@ do_resizepart (PedDevice** dev, PedDisk** diskp) +@@ -1655,6 +1661,11 @@ do_resizepart (PedDevice** dev, PedDisk* PedSector start, end, oldend; PedGeometry *range_end = NULL; PedConstraint* constraint; @@ -67,19 +67,20 @@ index 3cc8f77..2e31659 100644 int rc = 0; if (!disk) { -@@ -1650,26 +1661,39 @@ do_resizepart (PedDevice** dev, PedDisk** diskp) +@@ -1671,7 +1682,8 @@ do_resizepart (PedDevice** dev, PedDisk* if (!command_line_get_partition (_("Partition number?"), disk, &part)) goto error; - if (!_partition_warn_busy (part)) -+ /* warn early if the partition end is not provided on cmdline */ ++ /* warn early if the partition end is not provided on cmdline */ + if (cmdline_words <= part_idx && !_partition_warn_busy (part, danger_if_busy)) goto error; -- + start = part->geom.start; - end = oldend = part->geom.end; - if (!command_line_get_sector (_("End?"), *dev, &end, &range_end, NULL)) +@@ -1681,19 +1693,32 @@ do_resizepart (PedDevice** dev, PedDisk* goto error; + _adjust_end_if_iec(&start, &end, range_end, end_input); + free(end_input); + if (cmdline_words >= end_idx && !_partition_warn_busy (part, danger_if_busy)) + goto error; + @@ -92,26 +93,27 @@ index 3cc8f77..2e31659 100644 - if (part->geom.end < oldend) - if (ped_exception_throw ( + if (part->geom.end < oldend) { -+ if (opt_script_mode && (!ped_partition_is_busy (part) || ignore_busy)) { -+ char *path = ped_partition_get_path (part); ++ if (opt_script_mode && (!ped_partition_is_busy (part) || ignore_busy)) { ++ char *path = ped_partition_get_path (part); + ped_exception_throw ( -+ PED_EXCEPTION_WARNING, -+ PED_EXCEPTION_UNHANDLED, -+ _("Shrinking partition %s, data loss possible."), path); -+ free(path); ++ PED_EXCEPTION_WARNING, ++ PED_EXCEPTION_UNHANDLED, ++ _("Shrinking partition %s, data loss possible."), path); ++ free(path); + } else if (ped_exception_throw ( PED_EXCEPTION_WARNING, PED_EXCEPTION_YES_NO, _("Shrinking a partition can cause data loss, " \ "are you sure you want to continue?")) != PED_EXCEPTION_YES) -+ { - goto error_destroy_constraint; -+ } +- goto error_destroy_constraint; ++ { ++ goto error_destroy_constraint; ++ } + } ped_disk_commit (disk); if ((*dev)->type != PED_DEVICE_FILE) -@@ -1690,6 +1714,7 @@ static int +@@ -1714,6 +1739,7 @@ static int do_rm (PedDevice** dev, PedDisk** diskp) { PedPartition* part = NULL; @@ -119,7 +121,7 @@ index 3cc8f77..2e31659 100644 if (!*diskp) *diskp = ped_disk_new (*dev); -@@ -1698,7 +1723,7 @@ do_rm (PedDevice** dev, PedDisk** diskp) +@@ -1722,7 +1748,7 @@ do_rm (PedDevice** dev, PedDisk** diskp) if (!command_line_get_partition (_("Partition number?"), *diskp, &part)) goto error; @@ -127,4 +129,4 @@ index 3cc8f77..2e31659 100644 + if (!_partition_warn_busy (part, danger_if_busy)) goto error; - ped_disk_delete_partition (*diskp, part); + if (!ped_disk_delete_partition (*diskp, part)) diff --git a/parted-fix-wrong-error-label-jump-in-mkpart.patch b/parted-fix-wrong-error-label-jump-in-mkpart.patch deleted file mode 100644 index 54fe747..0000000 --- a/parted-fix-wrong-error-label-jump-in-mkpart.patch +++ /dev/null @@ -1,66 +0,0 @@ -From af150f6764a08eae4b4cf448c392259c067a1523 Mon Sep 17 00:00:00 2001 -From: Wang Dong -Date: Fri, 23 Dec 2016 06:53:37 +0100 -Subject: [PATCH] parted: fix wrong error label jump in mkpart - -When the user makes a new partition, if parted fails to add the -partition to disk, it jumps to wrong error label. In this -situation, this new partition actually is not a node in disk -data structure. But in the wrong error label, it pretends this -is a node and removes it as a list node, leading to other -partition in this disk deleted. This might lead to a memory leak. -Because if there are other partitions, it just removes them from -list without releasing the resource. And this also leads to different -disk information between memory and device. This is confusing. - -But when the new partition is added to disk successfully and if -any operations followed fail, this partition should be removed from -disk and destroyed. - -Signed-off-by: Wang Dong -Signed-off-by: Hendrik Brueckner ---- - parted/parted.c | 9 +++++---- - 1 file changed, 5 insertions(+), 4 deletions(-) - -Index: parted-3.2/parted/parted.c -=================================================================== ---- parted-3.2.orig/parted/parted.c -+++ parted-3.2/parted/parted.c -@@ -796,7 +796,7 @@ do_mkpart (PedDevice** dev, PedDisk** di - ped_constraint_destroy (constraint_any); - - if (!added_ok) -- goto error_remove_part; -+ goto error_destroy_simple_constraints; - - if (!ped_geometry_test_sector_inside(range_start, part->geom.start) || - !ped_geometry_test_sector_inside(range_end, part->geom.end)) { -@@ -865,7 +865,7 @@ do_mkpart (PedDevice** dev, PedDisk** di - free (part_name); /* avoid double-free upon failure */ - part_name = NULL; - if (!ped_partition_set_system (part, fs_type)) -- goto error; -+ goto error_remove_part; - if (ped_partition_is_flag_available (part, PED_PARTITION_LBA)) - ped_partition_set_flag (part, PED_PARTITION_LBA, 1); - if (ped_partition_is_flag_available (part, PED_PARTITION_SWAP) && -@@ -881,7 +881,7 @@ do_mkpart (PedDevice** dev, PedDisk** di - } - - if (!ped_disk_commit (disk)) -- goto error; -+ goto error_remove_part; - - /* clean up */ - if (range_start != NULL) -@@ -904,7 +904,8 @@ error_remove_part: - error_destroy_simple_constraints: - ped_partition_destroy (part); - error: -- free (part_name); -+ if (part_name) -+ free (part_name); - if (range_start != NULL) - ped_geometry_destroy (range_start); - if (range_end != NULL) diff --git a/parted-implement-wipesignatures-option.patch b/parted-implement-wipesignatures-option.patch index 0354650..b64ff30 100644 --- a/parted-implement-wipesignatures-option.patch +++ b/parted-implement-wipesignatures-option.patch @@ -17,8 +17,10 @@ Signed-off-by: Sebastian Parschauer parted/parted.c | 16 ++++++++++++++++ 5 files changed, 78 insertions(+) ---- a/doc/C/parted.8 -+++ b/doc/C/parted.8 +Index: parted-3.3/doc/C/parted.8 +=================================================================== +--- parted-3.3.orig/doc/C/parted.8 ++++ parted-3.3/doc/C/parted.8 @@ -30,6 +30,10 @@ never prompts for user intervention .B -v, --version displays the version @@ -30,9 +32,11 @@ Signed-off-by: Sebastian Parschauer .B -a \fIalignment-type\fP, --align \fIalignment-type\fP Set alignment for newly created partitions, valid alignment types are: .RS ---- a/include/parted/device.in.h -+++ b/include/parted/device.in.h -@@ -119,6 +119,7 @@ struct _PedDeviceArchOps { +Index: parted-3.3/include/parted/device.in.h +=================================================================== +--- parted-3.3.orig/include/parted/device.in.h ++++ parted-3.3/include/parted/device.in.h +@@ -122,6 +122,7 @@ struct _PedDeviceArchOps { /* These functions are optional */ PedAlignment *(*get_minimum_alignment)(const PedDevice *dev); PedAlignment *(*get_optimum_alignment)(const PedDevice *dev); @@ -40,7 +44,7 @@ Signed-off-by: Sebastian Parschauer }; #include -@@ -155,6 +156,7 @@ extern PedConstraint *ped_device_get_opt +@@ -158,6 +159,7 @@ extern PedConstraint *ped_device_get_opt extern PedAlignment *ped_device_get_minimum_alignment(const PedDevice *dev); extern PedAlignment *ped_device_get_optimum_alignment(const PedDevice *dev); @@ -48,9 +52,11 @@ Signed-off-by: Sebastian Parschauer /* private stuff ;-) */ ---- a/libparted/arch/linux.c -+++ b/libparted/arch/linux.c -@@ -3298,6 +3298,44 @@ linux_get_optimum_alignment(const PedDev +Index: parted-3.3/libparted/arch/linux.c +=================================================================== +--- parted-3.3.orig/libparted/arch/linux.c ++++ parted-3.3/libparted/arch/linux.c +@@ -3395,6 +3395,44 @@ linux_get_optimum_alignment(const PedDev blkid_topology_get_alignment_offset(tp) / dev->sector_size, blkid_topology_get_optimal_io_size(tp) / dev->sector_size); } @@ -94,8 +100,8 @@ Signed-off-by: Sebastian Parschauer +} #endif - static PedDeviceArchOps linux_dev_ops = { -@@ -3318,6 +3356,9 @@ static PedDeviceArchOps linux_dev_ops = + #if defined __s390__ || defined __s390x__ +@@ -3471,6 +3509,9 @@ static PedDeviceArchOps linux_dev_ops = get_minimum_alignment: linux_get_minimum_alignment, get_optimum_alignment: linux_get_optimum_alignment, #endif @@ -105,9 +111,11 @@ Signed-off-by: Sebastian Parschauer }; PedDiskArchOps linux_disk_ops = { ---- a/libparted/device.c -+++ b/libparted/device.c -@@ -565,4 +565,21 @@ ped_device_get_optimum_alignment(const P +Index: parted-3.3/libparted/device.c +=================================================================== +--- parted-3.3.orig/libparted/device.c ++++ parted-3.3/libparted/device.c +@@ -559,4 +559,21 @@ ped_device_get_optimum_alignment(const P return align; } @@ -129,8 +137,10 @@ Signed-off-by: Sebastian Parschauer +} + /** @} */ ---- a/parted/parted.c -+++ b/parted/parted.c +Index: parted-3.3/parted/parted.c +=================================================================== +--- parted-3.3.orig/parted/parted.c ++++ parted-3.3/parted/parted.c @@ -76,6 +76,7 @@ static int MEGABYTE_SECTORS (PedDevice* enum { @@ -161,7 +171,7 @@ Signed-off-by: Sebastian Parschauer int opt_machine_mode = 0; int disk_is_modified = 0; int is_toggle_mode = 0; -@@ -650,6 +654,7 @@ _adjust_end_if_iec (PedSector* start, Pe +@@ -651,6 +655,7 @@ _adjust_end_if_iec (PedSector* start, Pe } } @@ -169,7 +179,7 @@ Signed-off-by: Sebastian Parschauer static int do_mkpart (PedDevice** dev, PedDisk** diskp) { -@@ -840,6 +845,14 @@ do_mkpart (PedDevice** dev, PedDisk** di +@@ -848,6 +853,14 @@ do_mkpart (PedDevice** dev, PedDisk** di if (ped_partition_is_flag_available (part, PED_PARTITION_LBA)) ped_partition_set_flag (part, PED_PARTITION_LBA, 1); @@ -182,9 +192,9 @@ Signed-off-by: Sebastian Parschauer + } + if (!ped_disk_commit (disk)) - goto error; + goto error_remove_part; -@@ -2196,6 +2209,9 @@ while (1) +@@ -2252,6 +2265,9 @@ while (1) case PRETEND_INPUT_TTY: pretend_input_tty = 1; break; diff --git a/parted-mac.patch b/parted-mac.patch index 452538a..91ec2b4 100644 --- a/parted-mac.patch +++ b/parted-mac.patch @@ -8,10 +8,10 @@ Patch-mainline: no, custom SUSE patch parted/parted.c | 12 ++++++++++++ 4 files changed, 85 insertions(+), 3 deletions(-) -Index: parted-3.2/include/parted/disk.in.h +Index: parted-3.3/include/parted/disk.in.h =================================================================== ---- parted-3.2.orig/include/parted/disk.in.h -+++ parted-3.2/include/parted/disk.in.h +--- parted-3.3.orig/include/parted/disk.in.h ++++ parted-3.3/include/parted/disk.in.h @@ -83,10 +83,11 @@ enum _PedPartitionFlag { enum _PedDiskTypeFeature { @@ -45,11 +45,11 @@ Index: parted-3.2/include/parted/disk.in.h extern int ped_partition_is_busy (const PedPartition* part); extern char* ped_partition_get_path (const PedPartition* part); -Index: parted-3.2/libparted/disk.c +Index: parted-3.3/libparted/disk.c =================================================================== ---- parted-3.2.orig/libparted/disk.c -+++ parted-3.2/libparted/disk.c -@@ -1184,6 +1184,39 @@ _disk_pop_update_mode (PedDisk* disk) +--- parted-3.3.orig/libparted/disk.c ++++ parted-3.3/libparted/disk.c +@@ -1185,6 +1185,39 @@ _disk_pop_update_mode (PedDisk* disk) * @{ */ @@ -89,11 +89,11 @@ Index: parted-3.2/libparted/disk.c PedPartition* _ped_partition_alloc (const PedDisk* disk, PedPartitionType type, const PedFileSystemType* fs_type, -Index: parted-3.2/libparted/labels/mac.c +Index: parted-3.3/libparted/labels/mac.c =================================================================== ---- parted-3.2.orig/libparted/labels/mac.c -+++ parted-3.2/libparted/labels/mac.c -@@ -1393,6 +1393,36 @@ mac_get_partition_alignment(const PedDis +--- parted-3.3.orig/libparted/labels/mac.c ++++ parted-3.3/libparted/labels/mac.c +@@ -1396,6 +1396,36 @@ mac_get_partition_alignment(const PedDis return ped_alignment_new(0, 1); } @@ -130,7 +130,7 @@ Index: parted-3.2/libparted/labels/mac.c static PedConstraint* _primary_constraint (PedDisk* disk) { -@@ -1593,6 +1623,8 @@ static PedDiskOps mac_disk_ops = { +@@ -1596,6 +1626,8 @@ static PedDiskOps mac_disk_ops = { partition_set_name: mac_partition_set_name, partition_get_name: mac_partition_get_name, @@ -139,7 +139,7 @@ Index: parted-3.2/libparted/labels/mac.c get_partition_alignment: mac_get_partition_alignment, -@@ -1603,7 +1635,7 @@ static PedDiskType mac_disk_type = { +@@ -1606,7 +1638,7 @@ static PedDiskType mac_disk_type = { next: NULL, name: "mac", ops: &mac_disk_ops, @@ -148,11 +148,11 @@ Index: parted-3.2/libparted/labels/mac.c }; void -Index: parted-3.2/parted/parted.c +Index: parted-3.3/parted/parted.c =================================================================== ---- parted-3.2.orig/parted/parted.c -+++ parted-3.2/parted/parted.c -@@ -888,6 +888,7 @@ static char* +--- parted-3.3.orig/parted/parted.c ++++ parted-3.3/parted/parted.c +@@ -929,6 +929,7 @@ static char* partition_print_flags (PedPartition const *part) { int xtype; @@ -160,7 +160,7 @@ Index: parted-3.2/parted/parted.c char *res = xstrdup (""); if (!part) return res; -@@ -920,6 +921,17 @@ partition_print_flags (PedPartition cons +@@ -961,6 +962,17 @@ partition_print_flags (PedPartition cons } } diff --git a/parted-mkpart-set-a-swap-flag-if-available.patch b/parted-mkpart-set-a-swap-flag-if-available.patch index 51021a8..eb30c59 100644 --- a/parted-mkpart-set-a-swap-flag-if-available.patch +++ b/parted-mkpart-set-a-swap-flag-if-available.patch @@ -16,9 +16,11 @@ Signed-off-by: Sebastian Parschauer parted/parted.c | 10 ++++++++++ 1 file changed, 10 insertions(+) ---- a/parted/parted.c -+++ b/parted/parted.c -@@ -655,6 +655,13 @@ _adjust_end_if_iec (PedSector* start, Pe +Index: parted-3.3/parted/parted.c +=================================================================== +--- parted-3.3.orig/parted/parted.c ++++ parted-3.3/parted/parted.c +@@ -656,6 +656,13 @@ _adjust_end_if_iec (PedSector* start, Pe } @@ -32,8 +34,8 @@ Signed-off-by: Sebastian Parschauer static int do_mkpart (PedDevice** dev, PedDisk** diskp) { -@@ -844,6 +851,9 @@ do_mkpart (PedDevice** dev, PedDisk** di - goto error; +@@ -852,6 +859,9 @@ do_mkpart (PedDevice** dev, PedDisk** di + goto error_remove_part; if (ped_partition_is_flag_available (part, PED_PARTITION_LBA)) ped_partition_set_flag (part, PED_PARTITION_LBA, 1); + if (ped_partition_is_flag_available (part, PED_PARTITION_SWAP) && diff --git a/parted-resize-alias-to-resizepart.patch b/parted-resize-alias-to-resizepart.patch index 75240e8..4577f10 100644 --- a/parted-resize-alias-to-resizepart.patch +++ b/parted-resize-alias-to-resizepart.patch @@ -5,11 +5,11 @@ Patch-mainline: no, compatibility for parted < 3.0 syntax parted/parted.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) -Index: parted-3.2/parted/parted.c +Index: parted-3.3/parted/parted.c =================================================================== ---- parted-3.2.orig/parted/parted.c -+++ parted-3.2/parted/parted.c -@@ -2055,9 +2055,11 @@ NULL), +--- parted-3.3.orig/parted/parted.c ++++ parted-3.3/parted/parted.c +@@ -2111,9 +2111,11 @@ NULL), command_register (commands, command_create ( str_list_create_unique ("resize", _("resize"), NULL), diff --git a/parted-type.patch b/parted-type.patch index 37eb5ec..c73da21 100644 --- a/parted-type.patch +++ b/parted-type.patch @@ -12,10 +12,10 @@ type for msdos partition tables. parted/ui.c | 3 ++ 5 files changed, 56 insertions(+), 23 deletions(-) -Index: parted-3.2/include/parted/disk.in.h +Index: parted-3.3/include/parted/disk.in.h =================================================================== ---- parted-3.2.orig/include/parted/disk.in.h -+++ parted-3.2/include/parted/disk.in.h +--- parted-3.3.orig/include/parted/disk.in.h ++++ parted-3.3/include/parted/disk.in.h @@ -75,10 +75,11 @@ enum _PedPartitionFlag { PED_PARTITION_LEGACY_BOOT=15, PED_PARTITION_MSFT_DATA=16, @@ -30,11 +30,11 @@ Index: parted-3.2/include/parted/disk.in.h enum _PedDiskTypeFeature { PED_DISK_TYPE_EXTENDED=1, /**< supports extended partitions */ -Index: parted-3.2/libparted/disk.c +Index: parted-3.3/libparted/disk.c =================================================================== ---- parted-3.2.orig/libparted/disk.c -+++ parted-3.2/libparted/disk.c -@@ -2388,6 +2388,8 @@ ped_partition_flag_get_name (PedPartitio +--- parted-3.3.orig/libparted/disk.c ++++ parted-3.3/libparted/disk.c +@@ -2389,6 +2389,8 @@ ped_partition_flag_get_name (PedPartitio return N_("lba"); case PED_PARTITION_HPSERVICE: return N_("hp-service"); @@ -43,11 +43,11 @@ Index: parted-3.2/libparted/disk.c case PED_PARTITION_PALO: return N_("palo"); case PED_PARTITION_PREP: -Index: parted-3.2/libparted/labels/dos.c +Index: parted-3.3/libparted/labels/dos.c =================================================================== ---- parted-3.2.orig/libparted/labels/dos.c -+++ parted-3.2/libparted/labels/dos.c -@@ -1550,6 +1550,10 @@ msdos_partition_set_flag (PedPartition* +--- parted-3.3.orig/libparted/labels/dos.c ++++ parted-3.3/libparted/labels/dos.c +@@ -1565,6 +1565,10 @@ msdos_partition_set_flag (PedPartition* disk = part->disk; switch (flag) { @@ -58,7 +58,7 @@ Index: parted-3.2/libparted/labels/dos.c case PED_PARTITION_HIDDEN: if (part->type == PED_PARTITION_EXTENDED) { ped_exception_throw ( -@@ -1657,6 +1661,9 @@ msdos_partition_get_flag (const PedParti +@@ -1690,6 +1694,9 @@ msdos_partition_get_flag (const PedParti case PED_PARTITION_LBA: return dos_data->lba; @@ -68,7 +68,7 @@ Index: parted-3.2/libparted/labels/dos.c case PED_PARTITION_PALO: return dos_data->palo; -@@ -1689,6 +1696,7 @@ msdos_partition_is_flag_available (const +@@ -1728,6 +1735,7 @@ msdos_partition_is_flag_available (const case PED_PARTITION_RAID: case PED_PARTITION_LVM: case PED_PARTITION_LBA: @@ -76,11 +76,11 @@ Index: parted-3.2/libparted/labels/dos.c case PED_PARTITION_PALO: case PED_PARTITION_PREP: case PED_PARTITION_IRST: -Index: parted-3.2/parted/parted.c +Index: parted-3.3/parted/parted.c =================================================================== ---- parted-3.2.orig/parted/parted.c -+++ parted-3.2/parted/parted.c -@@ -887,28 +887,40 @@ error: +--- parted-3.3.orig/parted/parted.c ++++ parted-3.3/parted/parted.c +@@ -928,28 +928,40 @@ error: static char* partition_print_flags (PedPartition const *part) { @@ -140,7 +140,7 @@ Index: parted-3.2/parted/parted.c } static int -@@ -1726,12 +1738,19 @@ do_set (PedDevice** dev, PedDisk **diskp +@@ -1808,12 +1820,19 @@ do_set (PedDevice** dev, PedDisk **diskp goto error; if (!command_line_get_part_flag (_("Flag to Invert?"), part, &flag)) goto error; diff --git a/parted-ui-remove-unneccesary-information-of-command.patch b/parted-ui-remove-unneccesary-information-of-command.patch deleted file mode 100644 index afec72c..0000000 --- a/parted-ui-remove-unneccesary-information-of-command.patch +++ /dev/null @@ -1,41 +0,0 @@ -From 0b7946a095f307e427b81795cbc96028ee179b91 Mon Sep 17 00:00:00 2001 -From: Wang Dong -Date: Fri, 24 Mar 2017 03:11:10 +0100 -Subject: [PATCH] parted/ui: remove unneccesary information of command line - -When some command fails, the information still exists in -command_line buffer. When in command mode or interactive mode, -if an interactive exception prompts, the remained information -will be processed as option from user. This will raise some other -information or even unexpected results. So before getting option -input from user, clean the command line buffer. - -Example: When the disk label is invalid and user tries to make - new partition on the device with command like, - mkpart 0 50%. Then parted will raise an exception - telling an invalid disk label found and whether to correct it. - But at this time 0 as the input of mkpart will be - considered as the option input for the exception(yes/no). - So one more exception will raised with error information. - -Signed-off-by: Wang Dong -Signed-off-by: Hendrik Brueckner ---- - parted/ui.c | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/parted/ui.c b/parted/ui.c -index af0539c..752860b 100644 ---- a/parted/ui.c -+++ b/parted/ui.c -@@ -1288,6 +1288,7 @@ command_line_get_ex_opt (const char* prompt, PedExceptionOption options) - PedExceptionOption opt; - char* opt_name; - -+ command_line_flush (); - for (opt = option_get_next (options, 0); opt; - opt = option_get_next (options, opt)) { - options_strlist = str_list_append_unique (options_strlist, --- -2.16.4 - diff --git a/parted-wipeaix.patch b/parted-wipeaix.patch index 83912d7..948624f 100644 --- a/parted-wipeaix.patch +++ b/parted-wipeaix.patch @@ -5,11 +5,11 @@ Patch-mainline: no, custom SUSE patch libparted/labels/dos.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) -Index: parted-3.2/libparted/labels/dos.c +Index: parted-3.3/libparted/labels/dos.c =================================================================== ---- parted-3.2.orig/libparted/labels/dos.c -+++ parted-3.2/libparted/labels/dos.c -@@ -1285,7 +1285,13 @@ msdos_write (const PedDisk* disk) +--- parted-3.3.orig/libparted/labels/dos.c ++++ parted-3.3/libparted/labels/dos.c +@@ -1287,7 +1287,13 @@ msdos_write (const PedDisk* disk) return 0; DosRawTable *table = (DosRawTable *) s0; diff --git a/parted.changes b/parted.changes index d89c9a4..299dc0b 100644 --- a/parted.changes +++ b/parted.changes @@ -1,3 +1,84 @@ +------------------------------------------------------------------- +Fri Jan 3 14:46:27 UTC 2020 - Anna Maresova + +- fix crash in do_resizepart + + parted-fix-end_input-usage.patch: Fix end_input usage in + do_resizepart + +------------------------------------------------------------------- +Fri Nov 22 14:25:28 UTC 2019 - Anna Maresova + +- 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 + does not trigger exact placement. + - mkpart: Allow negative start value when FS-TYPE is not given +- remove following patches (now in upstream): + - 0001-fdasd-geometry-handling-updated-from-upstream-s390-t.patch + - 0002-dasd-enhance-device-probing.patch + - 0003-parted-fix-build-error-on-s390.patch + - 0004-fdasd.c-Safeguard-against-geometry-misprobing.patch + - 0005-libparted-Remove-fdasd-geometry-code-from-alloc_meta.patch + - clean-the-disk-information-when-commands-fail-in-int.patch + - lib-fs-resize-prevent-crash-resizing-FAT16.patch + - libpartd-dasd-improve-flag-processing-for-DASD-LDL.patch + - libparted-Add-support-for-NVDIMM-devices.patch + - libparted-Add-support-for-NVMe-devices.patch + - libparted-Add-support-for-RAM-drives.patch + - libparted-BLKPG_RESIZE_PARTITION-uses-bytes.patch + - libparted-Use-read-only-when-probing-devices-on-linu.patch + - libparted-allow-bigger-snap-radius-if-cylinders-are-used.patch + - libparted-dasd-add-an-exception-for-changing-DASD-LD.patch + - libparted-dasd-add-new-fdasd-functions.patch + - libparted-dasd-add-test-cases-for-the-new-fdasd-func.patch + - libparted-dasd-correct-the-offset-where-the-first-pa.patch + - libparted-dasd-unify-vtoc-handling-for-cdl-ldl.patch + - libparted-dasd-update-and-improve-fdasd-functions.patch + - libparted-device-mapper-uses-512b-sectors.patch + - libparted-dont-warn-if-no-HDIO_GET_IDENTITY.patch + - libparted-fix-starting-CHS-in-protective-MBR.patch + - libparted-fix-udev-cookie-leak.patch + - libparted-make-sure-not-to-treat-percentages-and-cyls-as-exact.patch + - libparted-set-swap-flag-on-GPT-partitions.patch + - libparted-sysmacros.patch + - parted-3.2.tar.xz + - parted-3.2.tar.xz.sig + - parted-check-the-name-of-partition-first-when-to-nam.patch + - parted-dont-crash-in-disk_set-when-disk-label-not-found.patch + - parted-fix-crash-due-to-improper-partition-number-in.patch + - parted-fix-wrong-error-label-jump-in-mkpart.patch + - parted-ui-remove-unneccesary-information-of-command.patch + - tests-check-extended-partition-length.patch + - tests-increase-scsi_debug-tmo.patch + - tests-set-optimal-blocks-for-scsi_debug.patch + - tests-update-t0220-t0280-for-swap-flag.patch + - tests-use-wait_for_dev_to_-functions.patch + - tests-wait_for_-loop.patch +- backported or refreshed remaining patches + ------------------------------------------------------------------- Wed Jul 10 10:16:16 UTC 2019 - Anna Maresova diff --git a/parted.spec b/parted.spec index 40a6be4..694b2a5 100644 --- a/parted.spec +++ b/parted.spec @@ -1,7 +1,7 @@ # # spec file for package parted # -# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2020 SUSE LINUX GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -17,7 +17,7 @@ Name: parted -Version: 3.2 +Version: 3.3 Release: 0 Summary: GNU partitioner License: GPL-3.0-or-later @@ -37,78 +37,36 @@ Patch11: parted-wipeaix.patch Patch12: libparted-partition-naming.patch #PATCH-FEATURE-SUSE more-reliable-informing-the-kernel.patch bnc#657360 petr.uzel@suse.cz Patch13: more-reliable-informing-the-kernel.patch -Patch17: dummy-bootcode-only-for-x86.patch -Patch18: parted-type.patch -Patch19: parted-mac.patch -Patch21: libparted-use-BLKRRPART-for-DASD.patch.patch -Patch22: libparted-allow-bigger-snap-radius-if-cylinders-are-used.patch -Patch23: libparted-make-BLKRRPART-more-robust.patch -Patch24: libparted-make-sure-not-to-treat-percentages-and-cyls-as-exact.patch -Patch25: libparted-dasd-implicit-partition-disk-flag.patch -Patch26: lib-fs-resize-prevent-crash-resizing-FAT16.patch -Patch27: parted-dont-crash-in-disk_set-when-disk-label-not-found.patch -Patch28: libparted-device-mapper-uses-512b-sectors.patch +Patch14: dummy-bootcode-only-for-x86.patch +Patch15: parted-type.patch +Patch16: parted-mac.patch +Patch17: libparted-use-BLKRRPART-for-DASD.patch.patch +Patch18: libparted-make-BLKRRPART-more-robust.patch +Patch19: libparted-dasd-implicit-partition-disk-flag.patch # Remove following compatibility patch once bnc#931765 is resolved -Patch29: parted-resize-alias-to-resizepart.patch -Patch30: libparted-avoid-libdevice-mapper-warnings.patch +Patch20: parted-resize-alias-to-resizepart.patch +Patch21: libparted-avoid-libdevice-mapper-warnings.patch # Patch31 dropped for bsc#1058667 -Patch32: libparted-Use-read-only-when-probing-devices-on-linu.patch -Patch33: libparted-open-the-device-RO-and-lazily-switch-to-RW.patch -Patch34: parted-implement-wipesignatures-option.patch +Patch22: libparted-open-the-device-RO-and-lazily-switch-to-RW.patch +Patch23: parted-implement-wipesignatures-option.patch # bsc#982169 -Patch35: libparted-Add-support-for-NVMe-devices.patch -Patch36: libparted-fix-nvme-partition-naming.patch -Patch37: libparted-dont-warn-if-no-HDIO_GET_IDENTITY.patch -# fate#320525 / bsc#935127 -Patch38: 0001-fdasd-geometry-handling-updated-from-upstream-s390-t.patch -Patch39: 0002-dasd-enhance-device-probing.patch -Patch40: 0003-parted-fix-build-error-on-s390.patch -Patch41: 0004-fdasd.c-Safeguard-against-geometry-misprobing.patch -Patch42: 0005-libparted-Remove-fdasd-geometry-code-from-alloc_meta.patch -# fate#321531 -Patch43: libparted-dasd-unify-vtoc-handling-for-cdl-ldl.patch -Patch44: libparted-dasd-update-and-improve-fdasd-functions.patch -Patch45: libparted-dasd-add-new-fdasd-functions.patch -Patch46: libparted-Add-support-for-RAM-drives.patch +Patch24: libparted-fix-nvme-partition-naming.patch # fate#314888 -Patch47: libparted-dasd-improve-lvm-raid-flag-handling.patch -Patch48: parted-mkpart-set-a-swap-flag-if-available.patch -Patch49: libparted-set-swap-flag-on-GPT-partitions.patch -Patch50: libparted-dasd-add-swap-flag-handling-for-DASD-CDL.patch -Patch51: parted-mkpart-allow-empty-gpt-part-name.patch -Patch52: libparted-fix-starting-CHS-in-protective-MBR.patch -Patch53: libparted-BLKPG_RESIZE_PARTITION-uses-bytes.patch -Patch54: libparted-fix-udev-cookie-leak.patch -Patch55: libparted-Add-support-for-NVDIMM-devices.patch -Patch56: libparted-fix-NVDIMM-partition-naming.patch -Patch57: parted-escape-printed-device-path.patch -Patch58: parted-add-ignore-busy-option.patch -Patch59: parted-fix-resizepart-and-rm-command.patch -Patch60: libparted-use-BLKRRPART-only-when-needed.patch -Patch61: libparted-canonicalize-dev-md-paths.patch -Patch62: libparted-sysmacros.patch - -# bsc#1136245 -Patch63: libparted-dasd-correct-the-offset-where-the-first-pa.patch -Patch64: parted-fix-crash-due-to-improper-partition-number-in.patch -Patch65: parted-fix-wrong-error-label-jump-in-mkpart.patch -Patch66: clean-the-disk-information-when-commands-fail-in-int.patch -Patch67: parted-check-the-name-of-partition-first-when-to-nam.patch -Patch68: parted-ui-remove-unneccesary-information-of-command.patch -Patch69: libpartd-dasd-improve-flag-processing-for-DASD-LDL.patch -Patch70: libparted-dasd-add-an-exception-for-changing-DASD-LD.patch -Patch71: libparted-dasd-add-test-cases-for-the-new-fdasd-func.patch - +Patch25: libparted-dasd-improve-lvm-raid-flag-handling.patch +Patch26: parted-mkpart-set-a-swap-flag-if-available.patch +Patch27: libparted-dasd-add-swap-flag-handling-for-DASD-CDL.patch +Patch28: parted-mkpart-allow-empty-gpt-part-name.patch +Patch29: libparted-fix-NVDIMM-partition-naming.patch +Patch30: parted-escape-printed-device-path.patch +Patch31: parted-add-ignore-busy-option.patch +Patch32: parted-fix-resizepart-and-rm-command.patch +Patch33: libparted-use-BLKRRPART-only-when-needed.patch +Patch34: libparted-canonicalize-dev-md-paths.patch +Patch35: parted-fix-end_input-usage.patch # Fatresize Patch100: parted-fatresize-autoconf.patch Patch101: fatresize-fix-getting-dev-name.patch -# Upstream tests patches -Patch150: tests-set-optimal-blocks-for-scsi_debug.patch -Patch151: tests-increase-scsi_debug-tmo.patch -Patch152: tests-use-wait_for_dev_to_-functions.patch -Patch153: tests-wait_for_-loop.patch -Patch154: tests-update-t0220-t0280-for-swap-flag.patch -Patch155: tests-check-extended-partition-length.patch +# Tests patches Patch156: tests-add-helper-require_swap_.patch Patch157: tests-add-dev-md-check-to-t6100.patch @@ -169,9 +127,13 @@ to develop applications that require these. %patch11 -p1 %patch12 -p1 %patch13 -p1 +%patch14 -p1 +%patch15 -p1 +%patch16 -p1 %patch17 -p1 %patch18 -p1 %patch19 -p1 +%patch20 -p1 %patch21 -p1 %patch22 -p1 %patch23 -p1 @@ -182,54 +144,13 @@ to develop applications that require these. %patch28 -p1 %patch29 -p1 %patch30 -p1 +%patch31 -p1 %patch32 -p1 %patch33 -p1 %patch34 -p1 %patch35 -p1 -%patch36 -p1 -%patch37 -p1 -%patch38 -p1 -%patch39 -p1 -%patch40 -p1 -%patch41 -p1 -%patch42 -p1 -%patch43 -p1 -%patch44 -p1 -%patch45 -p1 -%patch46 -p1 -%patch47 -p1 -%patch48 -p1 -%patch49 -p1 -%patch50 -p1 -%patch51 -p1 -%patch52 -p1 -%patch53 -p1 -%patch54 -p1 -%patch55 -p1 -%patch56 -p1 -%patch57 -p1 -%patch58 -p1 -%patch59 -p1 -%patch60 -p1 -%patch61 -p1 -%patch62 -p1 -%patch63 -p1 -%patch64 -p1 -%patch65 -p1 -%patch66 -p1 -%patch67 -p1 -%patch68 -p1 -%patch69 -p1 -%patch70 -p1 -%patch71 -p1 %patch100 -p1 %patch101 -p1 -%patch150 -p1 -%patch151 -p1 -%patch152 -p1 -%patch153 -p1 -%patch154 -p1 -%patch155 -p1 %patch156 -p1 %patch157 -p1 %patch200 -p1 @@ -271,7 +192,7 @@ rm %{buildroot}%{_libdir}/*.la %defattr(-,root,root) %doc doc/API doc/FAT %{_includedir}/* -%{_libdir}/pkgconfig/libparted.pc +%{_libdir}/pkgconfig/libparted*.pc %{_libdir}/*.so %files -n libparted0 diff --git a/tests-adapt-to-SUSE.patch b/tests-adapt-to-SUSE.patch index 809a6c5..8db1840 100644 --- a/tests-adapt-to-SUSE.patch +++ b/tests-adapt-to-SUSE.patch @@ -11,8 +11,10 @@ Change dm partition name from 'pN' to '-partN' Tests: t6001, t6002, t6004, t6005 For: libparted-partition-naming.patch --- ---- a/tests/t2200-dos-label-recog.sh -+++ b/tests/t2200-dos-label-recog.sh +Index: parted-3.3/tests/t2200-dos-label-recog.sh +=================================================================== +--- parted-3.3.orig/tests/t2200-dos-label-recog.sh ++++ parted-3.3/tests/t2200-dos-label-recog.sh @@ -45,7 +45,7 @@ printf FAT | dd bs=1c seek=82 count=3 of # print the partition table parted -m -s $dev unit s p > out || fail=1 @@ -22,8 +24,10 @@ For: libparted-partition-naming.patch compare exp out || fail=1 ---- a/tests/t2310-dos-extended-2-sector-min-offset.sh -+++ b/tests/t2310-dos-extended-2-sector-min-offset.sh +Index: parted-3.3/tests/t2310-dos-extended-2-sector-min-offset.sh +=================================================================== +--- parted-3.3.orig/tests/t2310-dos-extended-2-sector-min-offset.sh ++++ parted-3.3/tests/t2310-dos-extended-2-sector-min-offset.sh @@ -33,8 +33,8 @@ p5=${scsi_dev}5 cat < exp || framework_failure BYT; @@ -35,8 +39,10 @@ For: libparted-partition-naming.patch EOF # Create a DOS label with an extended partition starting at sector 64. ---- a/tests/t3200-resize-partition.sh -+++ b/tests/t3200-resize-partition.sh +Index: parted-3.3/tests/t3200-resize-partition.sh +=================================================================== +--- parted-3.3.orig/tests/t3200-resize-partition.sh ++++ parted-3.3/tests/t3200-resize-partition.sh @@ -75,7 +75,7 @@ compare /dev/null err || fail=1 parted -m -s $dev u s p > out 2>&1 || fail=1 @@ -46,8 +52,10 @@ For: libparted-partition-naming.patch compare exp out || fail=1 # Remove the partition explicitly, so that mklabel doesn't evoke a warning. ---- a/tests/t3300-palo-prep.sh -+++ b/tests/t3300-palo-prep.sh +Index: parted-3.3/tests/t3300-palo-prep.sh +=================================================================== +--- parted-3.3.orig/tests/t3300-palo-prep.sh ++++ parted-3.3/tests/t3300-palo-prep.sh @@ -20,9 +20,9 @@ ss=$sector_size_ @@ -70,8 +78,10 @@ For: libparted-partition-naming.patch compare exp out || fail=1 ---- a/tests/t4100-msdos-starting-sector.sh -+++ b/tests/t4100-msdos-starting-sector.sh +Index: parted-3.3/tests/t4100-msdos-starting-sector.sh +=================================================================== +--- parted-3.3.orig/tests/t4100-msdos-starting-sector.sh ++++ parted-3.3/tests/t4100-msdos-starting-sector.sh @@ -56,7 +56,7 @@ cat < exp || fail=1 BYT; path:${N}s:file:$ss:$ss:msdos::; @@ -81,8 +91,10 @@ For: libparted-partition-naming.patch EOF # create a partition at the end of the label ---- a/tests/t6001-psep.sh -+++ b/tests/t6001-psep.sh +Index: parted-3.3/tests/t6001-psep.sh +=================================================================== +--- parted-3.3.orig/tests/t6001-psep.sh ++++ parted-3.3/tests/t6001-psep.sh @@ -31,9 +31,9 @@ linear2_=plinear-$$foo d1= d2= f1= f2= @@ -113,8 +125,10 @@ For: libparted-partition-naming.patch if [ -n "$fail" ]; then ls /dev/mapper ---- a/tests/t6004-dm-many-partitions.sh -+++ b/tests/t6004-dm-many-partitions.sh +Index: parted-3.3/tests/t6004-dm-many-partitions.sh +=================================================================== +--- parted-3.3.orig/tests/t6004-dm-many-partitions.sh ++++ parted-3.3/tests/t6004-dm-many-partitions.sh @@ -50,10 +50,10 @@ parted -m -a min -s /dev/mapper/$dm_name # Make sure all the partitions appeared under /dev/mapper/ @@ -128,8 +142,10 @@ For: libparted-partition-naming.patch done Exit $fail ---- a/tests/t6005-dm-uuid.sh -+++ b/tests/t6005-dm-uuid.sh +Index: parted-3.3/tests/t6005-dm-uuid.sh +=================================================================== +--- parted-3.3.orig/tests/t6005-dm-uuid.sh ++++ parted-3.3/tests/t6005-dm-uuid.sh @@ -47,14 +47,14 @@ for ((i=1; i<=$n_partitions; i+=1)); do cmd="$cmd mkpart p$i ${s}s ${s}s" done @@ -148,8 +164,10 @@ For: libparted-partition-naming.patch done Exit $fail ---- a/tests/t0283-overlap-partitions.sh -+++ b/tests/t0283-overlap-partitions.sh +Index: parted-3.3/tests/t0283-overlap-partitions.sh +=================================================================== +--- parted-3.3.orig/tests/t0283-overlap-partitions.sh ++++ parted-3.3/tests/t0283-overlap-partitions.sh @@ -54,8 +54,8 @@ Partition Table: msdos Disk Flags: @@ -170,8 +188,10 @@ For: libparted-partition-naming.patch (parted) rm Partition number? 1 ---- a/tests/t6002-dm-busy.sh -+++ b/tests/t6002-dm-busy.sh +Index: parted-3.3/tests/t6002-dm-busy.sh +=================================================================== +--- parted-3.3.orig/tests/t6002-dm-busy.sh ++++ parted-3.3/tests/t6002-dm-busy.sh @@ -35,9 +35,9 @@ d1= f1= dev= @@ -212,8 +232,10 @@ For: libparted-partition-naming.patch EOF compare exp out || fail=1 ---- a/tests/t9042-dos-partition-limit.sh -+++ b/tests/t9042-dos-partition-limit.sh +Index: parted-3.3/tests/t9042-dos-partition-limit.sh +=================================================================== +--- parted-3.3.orig/tests/t9042-dos-partition-limit.sh ++++ parted-3.3/tests/t9042-dos-partition-limit.sh @@ -41,7 +41,7 @@ scsi_dev=$(cat dev-name) n=$((n_MiB * sectors_per_MiB)) printf '%s\n' "BYT;" \ @@ -222,7 +244,7 @@ For: libparted-partition-naming.patch + "1:$((start-2))s:$((n-1))s:$((n-start+2))s:::lba, type=0f;" \ > exp || fail=1 - parted -s $scsi_dev mklabel msdos || fail=1 + parted -s -a min $scsi_dev mklabel msdos mkpart extended $((start-2))s 100% || fail=1 @@ -51,7 +51,7 @@ i=1 while :; do end=$((start + partition_sectors - 2)) @@ -232,8 +254,10 @@ For: libparted-partition-naming.patch test $i = $((n_partitions - 1)) && break start=$((start + partition_sectors)) i=$((i+1)) ---- a/tests/t4100-msdos-partition-limits.sh -+++ b/tests/t4100-msdos-partition-limits.sh +Index: parted-3.3/tests/t4100-msdos-partition-limits.sh +=================================================================== +--- parted-3.3.orig/tests/t4100-msdos-partition-limits.sh ++++ parted-3.3/tests/t4100-msdos-partition-limits.sh @@ -81,7 +81,7 @@ do_mkpart $n $end || fail=1 # print the result parted -s $dev unit s p > out 2>&1 || fail=1 diff --git a/tests-add-dev-md-check-to-t6100.patch b/tests-add-dev-md-check-to-t6100.patch index 3862f9d..be5f25b 100644 --- a/tests-add-dev-md-check-to-t6100.patch +++ b/tests-add-dev-md-check-to-t6100.patch @@ -21,10 +21,10 @@ Signed-off-by: Sebastian Parschauer tests/t6100-mdraid-partitions.sh | 62 +++++++++++++++++++++++++++++++++++----- 1 file changed, 55 insertions(+), 7 deletions(-) -diff --git a/tests/t6100-mdraid-partitions.sh b/tests/t6100-mdraid-partitions.sh -index dbb1686..b471f56 100755 ---- a/tests/t6100-mdraid-partitions.sh -+++ b/tests/t6100-mdraid-partitions.sh +Index: parted-3.3/tests/t6100-mdraid-partitions.sh +=================================================================== +--- parted-3.3.orig/tests/t6100-mdraid-partitions.sh ++++ parted-3.3/tests/t6100-mdraid-partitions.sh @@ -21,6 +21,7 @@ require_root_ require_scsi_debug_module_ @@ -33,13 +33,14 @@ index dbb1686..b471f56 100755 # create memory-backed device scsi_debug_setup_ dev_size_mb=10 > dev-name || -@@ -40,13 +41,27 @@ parted -s "$scsi_dev" mklabel gpt \ +@@ -40,14 +41,28 @@ parted -s "$scsi_dev" mklabel gpt \ compare /dev/null out || fail=1 wait_for_dev_to_appear_ ${scsi_dev}2 || { fail=1; cat /proc/partitions; } +create_mddev() { + # create mdraid on top of both partitions -+ mdadm -C $md_dev --force -R -l1 -n2 "${scsi_dev}1" "${scsi_dev}2" ++ mdadm -C $md_dev -e0 --force -R -l1 -n2 "${scsi_dev}1" "${scsi_dev}2" ++ wait_for_dev_to_appear_ ${md_dev} || { fail=1; cat /proc/partitions; } +} + cleanup_fn_() { @@ -47,8 +48,9 @@ index dbb1686..b471f56 100755 mdadm -S $md_dev || warn_ "Failed to stop MD array, $md_dev" } --# create mdraid on top of both partitions --mdadm -C $md_dev --force -R -l1 -n2 "${scsi_dev}1" "${scsi_dev}2" +-# create mdraid on top of both partitions with v0.90 metadata +-mdadm -C $md_dev -e0 --force -R -l1 -n2 "${scsi_dev}1" "${scsi_dev}2" +-wait_for_dev_to_appear_ ${md_dev} || { fail=1; cat /proc/partitions; } +remove_mdparts() { + # Remove partitions from the raid device. + parted -s $md_dev rm 2 rm 1 > out 2>&1 || fail=1 @@ -63,7 +65,7 @@ index dbb1686..b471f56 100755 # create gpt and two partitions on the raid device parted -s $md_dev mklabel gpt \ -@@ -57,12 +72,45 @@ compare /dev/null out || fail=1 +@@ -58,12 +73,45 @@ compare /dev/null out || fail=1 # Verify that kernel has been informed about the second device. wait_for_dev_to_appear_ ${md_dev}p2 || { fail=1; cat /proc/partitions; } diff --git a/tests-check-extended-partition-length.patch b/tests-check-extended-partition-length.patch deleted file mode 100644 index d25cbae..0000000 --- a/tests-check-extended-partition-length.patch +++ /dev/null @@ -1,84 +0,0 @@ -From: "Brian C. Lane" -Date: Fri, 5 Jun 2015 13:46:29 -0700 -Subject: tests: Make sure the extended partition length is correct -For: libparted-BLKPG_RESIZE_PARTITION-uses-bytes.patch -References: bsc#1058667 -Patch-mainline: v3.3 -Git-commit: 31b5bfa4cd0b2e2944af22466e7b7d88ad94c4c9 - -parted tells the kernel the wrong length when reporting a resize of an -extended partition. Make sure the length is 2 for 512b sectors and 1 -sector for larger. -Acked-by: Sebastian Parschauer ---- - tests/Makefile.am | 1 + - tests/t2320-dos-extended-noclobber.sh | 48 +++++++++++++++++++++++++++++++++++ - 2 files changed, 49 insertions(+) - create mode 100644 tests/t2320-dos-extended-noclobber.sh - -diff --git a/tests/Makefile.am b/tests/Makefile.am -index ce8391d..001b9de 100644 ---- a/tests/Makefile.am -+++ b/tests/Makefile.am -@@ -47,6 +47,7 @@ TESTS = \ - t2201-pc98-label-recog.sh \ - t2300-dos-label-extended-bootcode.sh \ - t2310-dos-extended-2-sector-min-offset.sh \ -+ t2320-dos-extended-noclobber.sh \ - t2400-dos-hfs-partition-type.sh \ - t2500-probe-corrupt-hfs.sh \ - t3000-resize-fs.sh \ -diff --git a/tests/t2320-dos-extended-noclobber.sh b/tests/t2320-dos-extended-noclobber.sh -new file mode 100644 -index 0000000..6f3dfff ---- /dev/null -+++ b/tests/t2320-dos-extended-noclobber.sh -@@ -0,0 +1,48 @@ -+#!/bin/sh -+# Ensure that the extended partition reports the correct length -+# after adding another partition. -+ -+# Copyright (C) 2015 Free Software Foundation, Inc. -+ -+# This program is free software; you can redistribute it and/or modify -+# it under the terms of the GNU General Public License as published by -+# the Free Software Foundation; either version 3 of the License, or -+# (at your option) any later version. -+ -+# This program is distributed in the hope that it will be useful, -+# but WITHOUT ANY WARRANTY; without even the implied warranty of -+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+# GNU General Public License for more details. -+ -+# You should have received a copy of the GNU General Public License -+# along with this program. If not, see . -+ -+. "${srcdir=.}/init.sh"; path_prepend_ ../parted -+ -+require_root_ -+require_scsi_debug_module_ -+ -+# create memory-backed device -+ss=$sector_size_ -+scsi_debug_setup_ sector_size=$ss dev_size_mb=10 > dev-name || -+ skip_ 'failed to create scsi_debug device' -+scsi_dev=$(cat dev-name) -+ -+# Create a DOS label with an extended partition and a primary partition -+parted -s $scsi_dev mklabel msdos || fail=1 -+parted -s $scsi_dev mkpart extended 1 5 > out 2>&1 || fail=1 -+parted -s $scsi_dev mkpart primary 5 10 > out 2>&1 || fail=1 -+ -+# Make sure the size of the extended partition is correct. -+# 2 sectors for 512b and 1 sector for larger. /sys/.../size is in -+# 512b blocks so convert accordingly. -+dev=${scsi_dev#/dev/} -+ext_len=$(cat /sys/block/$dev/${dev}1/size) -+if [ $ss -eq 512 ]; then -+ expected_len=2 -+else -+ expected_len=$((ss / 512)) -+fi -+[ $ext_len -eq $expected_len ] || fail=1 -+ -+Exit $fail diff --git a/tests-increase-scsi_debug-tmo.patch b/tests-increase-scsi_debug-tmo.patch deleted file mode 100644 index ce486c8..0000000 --- a/tests-increase-scsi_debug-tmo.patch +++ /dev/null @@ -1,40 +0,0 @@ -From: "Brian C. Lane" -Date: Fri, 24 Feb 2017 11:06:20 -0800 -Subject: Increase timeout for rmmod scsi_debug and make it a - framework failure -For: upstream code -Patch-mainline: v3.3 -Git-commit: 40e55a0819862d5dbe2098803735f8c48fb30b6d - -On some hardware scsi_debug can take longer to remove. If this fails it -inevitably results in the next test failing since it cannot load -scsi_debug. - -Increse the timeout to 40 loops (8 seconds), and if it hits the limit -without succeeding call framework_failure_ - -Acked-by: Sebastian Parschauer ---- - tests/t-local.sh | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/tests/t-local.sh b/tests/t-local.sh -index 5655e0f..fb6a7e3 100644 ---- a/tests/t-local.sh -+++ b/tests/t-local.sh -@@ -27,13 +27,14 @@ scsi_debug_cleanup_() - # "Module scsi_debug is in use". - i=0 - udevadm settle -- while [ $i -lt 10 ] ; do -+ while [ $i -lt 40 ] ; do - rmmod scsi_debug \ - && { test "$VERBOSE" = yes && warn_ $ME_ rmmod scsi_debug...; break; } - sleep .2 || sleep 1 - i=$((i + 1)) - done - udevadm settle -+ test $i = 40 && framework_failure_ rmmod scsi_debug failed. - fi - rm -fr $scsi_debug_lock_dir_ - } diff --git a/tests-set-optimal-blocks-for-scsi_debug.patch b/tests-set-optimal-blocks-for-scsi_debug.patch deleted file mode 100644 index 0eea56b..0000000 --- a/tests-set-optimal-blocks-for-scsi_debug.patch +++ /dev/null @@ -1,30 +0,0 @@ -From: "Brian C. Lane" -Date: Tue, 23 Aug 2016 08:55:18 -0700 -Subject: tests: Set optimal blocks to 64 for scsi_debug devices -For: upstream code -Patch-mainline: v3.3 -Git-commit: da36186cb4c2c0470a6490aed424a8d51a2b1085 - -The Linux kernel 4.5 changed the optimal blocks count from 64 to 1024 -This causes tests using scsi_debug devices to fail because of alignment -issues. Set the opt_blks to 64 so that we have consistent behavior -across kernels. - -Acked-by: Sebastian Parschauer ---- - tests/t-local.sh | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/tests/t-local.sh b/tests/t-local.sh -index b40a5a0..5655e0f 100644 ---- a/tests/t-local.sh -+++ b/tests/t-local.sh -@@ -97,7 +97,7 @@ scsi_debug_setup_() - # It is not trivial to determine the name of the device we're creating. - # Record the names of all /sys/block/sd* devices *before* probing: - touch stamp -- modprobe scsi_debug "$@" || { rm -f stamp; return 1; } -+ modprobe scsi_debug opt_blks=64 "$@" || { rm -f stamp; return 1; } - scsi_debug_modprobe_succeeded_=1 - test "$VERBOSE" = yes \ - && echo $ME_ modprobe scsi_debug succeeded 1>&2 diff --git a/tests-update-t0220-t0280-for-swap-flag.patch b/tests-update-t0220-t0280-for-swap-flag.patch deleted file mode 100644 index c773528..0000000 --- a/tests-update-t0220-t0280-for-swap-flag.patch +++ /dev/null @@ -1,45 +0,0 @@ -From: "Brian C. Lane" -Date: Thu, 22 Dec 2016 16:59:27 -0800 -Subject: tests: Update t0220 and t0280 for the swap flag. -For: libparted-set-swap-flag-on-GPT-partitions.patch -For: parted-mkpart-set-a-swap-flag-if-available.patch -For: libparted-dasd-add-swap-flag-handling-for-DASD-CDL.patch -Patch-mainline: v3.3 -Git-commit: 5a9a49776ee98ca86cfe123b79bbee2279f93961 - -Acked-by: Sebastian Parschauer ---- - tests/t0220-gpt-msftres.sh | 6 +++++- - tests/t0280-gpt-corrupt.sh | 2 +- - 2 files changed, 6 insertions(+), 2 deletions(-) - -diff --git a/tests/t0220-gpt-msftres.sh b/tests/t0220-gpt-msftres.sh -index 79518ae6b342..6721a470b111 100755 ---- a/tests/t0220-gpt-msftres.sh -+++ b/tests/t0220-gpt-msftres.sh -@@ -56,7 +56,11 @@ printf "BYT;\n$dev:${n_sectors}s:file:$ss:$ss:gpt::;\n" > exp - i=1 - for type in $fs_types; do - end=$(expr $start + $part_size - 1) -- case $type in fat*|NTFS) flag=msftdata;; *) flag=;; esac -+ case $type in -+ fat*|NTFS) flag=msftdata;; -+ linux-swap) flag=swap;; -+ *) flag=;; -+ esac - echo "$i:${start}s:${end}s:${part_size}s::$type:$flag;" >> exp || fail=1 - parted -s $dev mkpart p-name $type ${start}s ${end}s > err 2>&1 || fail=1 - compare /dev/null err || fail=1 -diff --git a/tests/t0280-gpt-corrupt.sh b/tests/t0280-gpt-corrupt.sh -index a7c8d82291e5..1b4d86b094ea 100755 ---- a/tests/t0280-gpt-corrupt.sh -+++ b/tests/t0280-gpt-corrupt.sh -@@ -89,7 +89,7 @@ compare exp err || fail=1 - parted -m -s $dev u s print > out 2>&1 || fail=1 - - # check for expected output --printf "BYT;\nfile\n1:2048s:4095s:2048s::foo:;\n" > exp || fail=1 -+printf "BYT;\nfile\n1:2048s:4095s:2048s::foo:swap;\n" > exp || fail=1 - sed "s/.*gpt::;/file/" out > k && mv k out || fail=1 - compare exp out || fail=1 - diff --git a/tests-use-wait_for_dev_to_-functions.patch b/tests-use-wait_for_dev_to_-functions.patch deleted file mode 100644 index fbfe5d2..0000000 --- a/tests-use-wait_for_dev_to_-functions.patch +++ /dev/null @@ -1,185 +0,0 @@ -From: "Brian C. Lane" -Date: Fri, 7 Aug 2015 11:43:17 -0700 -Subject: tests: Use wait_for_dev_to_ functions -For: upstream code -Patch-mainline: v3.3 -Git-commit: db1728e6402a27fe64e8e132f810c22160ab8bcc - -Recent changes to udev have made some long-standing problems appear more -frequently. udev executes various actions when changes are made to -devices. Sometimes this can result in device nodes not appearing -immediately. Other times it can result in EBUSY being returned. This -patch only addresses devices that are slow to appear/disappear. - -It is best to use the wait_for_dev_to_appear_ and -wait_for_dev_to_disappear_ functions than to test for existance. These -will loop and wait for up to 2 seconds for it to appear. - -This also changes t9041 to fail if mkfs doesn't work since using skip -here may hide cases when the device node doesn't appear. - -[sparschauer: remove hunks for non-existing tests] -Signed-off-by: Sebastian Parschauer ---- - tests/t1100-busy-label.sh | 10 ++-------- - tests/t1102-loop-label.sh | 25 +++++-------------------- - tests/t2320-dos-extended-noclobber.sh | 1 + - tests/t6001-psep.sh | 4 ++-- - tests/t6004-dm-many-partitions.sh | 6 ++---- - tests/t6006-dm-512b-sectors.sh | 1 + - tests/t6100-mdraid-partitions.sh | 5 +++-- - tests/t9041-undetected-in-use-16th-partition.sh | 2 +- - 8 files changed, 17 insertions(+), 37 deletions(-) - -diff --git a/tests/t1100-busy-label.sh b/tests/t1100-busy-label.sh -index 4e256d32a010..70e8edec8a60 100755 ---- a/tests/t1100-busy-label.sh -+++ b/tests/t1100-busy-label.sh -@@ -27,22 +27,16 @@ dev=$(cat dev-name) - - parted -s "$dev" mklabel msdos mkpart primary fat32 1 40 > out 2>&1 || fail=1 - compare /dev/null out || fail=1 --mkfs.vfat ${dev}1 || skip_ "mkfs.vfat failed" -+wait_for_dev_to_appear_ ${dev}1 || fail=1 -+mkfs.vfat ${dev}1 || fail=1 - - mount_point="`pwd`/mnt" - - # Be sure to unmount upon interrupt, failure, etc. - cleanup_fn_() { umount "${dev}1" > /dev/null 2>&1; } - --# There's a race condition here: on udev-based systems, the partition#1 --# device, ${dev}1 (i.e., /dev/sdd1) is not created immediately, and --# without some delay, this mount command would fail. Using a flash card --# as $dev, the loop below typically iterates 7-20 times. -- - # create mount point dir. and mount the just-created partition on it - mkdir $mount_point || fail=1 --i=0; while :; do test -e "${dev}1" && break; test $i = 90 && break; -- i=$(expr $i + 1); done; - mount "${dev}1" $mount_point || fail=1 - - # now that a partition is mounted, mklabel attempt must fail -diff --git a/tests/t1102-loop-label.sh b/tests/t1102-loop-label.sh -index 97520021004d..68b9af45b428 100644 ---- a/tests/t1102-loop-label.sh -+++ b/tests/t1102-loop-label.sh -@@ -44,15 +44,9 @@ mv out o2 && sed -e "s,$dev,DEVICE,;s/ *$//" o2 > out - - compare exp out || fail=1 - parted -s $dev rm 1 || fail=1 --if [ -e ${dev}1 ]; then -- echo "Partition should not exist on loop device" -- fail=1 --fi -+wait_for_dev_to_disappear_ ${dev}1 2 || fail=1 - partprobe $dev || fail=1 --if [ -e ${dev}1 ]; then -- echo "Partition should not exist on loop device" -- fail=1 --fi -+wait_for_dev_to_disappear_ ${dev}1 2 || fail=1 - - mount_point="`pwd`/mnt" - -@@ -80,24 +74,15 @@ umount "$mount_point" - - # make sure partprobe cleans up stale partition devices - parted -s $dev mklabel msdos mkpart primary ext2 0% 100% || fail=1 --if [ ! -e ${dev}1 ]; then -- echo "Partition doesn't exist on loop device" -- fail=1 --fi -+wait_for_dev_to_appear_ ${dev}1 || fail=1 - - mke2fs -F $dev - partprobe $dev || fail=1 --if [ -e ${dev}1 ]; then -- echo "Partition should not exist on loop device" -- fail=1 --fi -+wait_for_dev_to_disappear_ ${dev}1 2 || fail=1 - - # make sure new loop label removes old partitions > 1 - parted -s $dev mklabel msdos mkpart primary ext2 0% 50% mkpart primary ext2 50% 100% || fail=1 - parted -s $dev mklabel loop || fail=1 --if [ -e ${dev}2 ]; then -- echo "Partition 2 not removed" -- fail=1 --fi -+wait_for_dev_to_disappear_ ${dev}2 2 || fail=1 - - Exit $fail -diff --git a/tests/t6001-psep.sh b/tests/t6001-psep.sh -index f15090abb3e7..4c758e8fbc73 100644 ---- a/tests/t6001-psep.sh -+++ b/tests/t6001-psep.sh -@@ -54,7 +54,7 @@ parted -s $dev mklabel msdos mkpart primary fat32 1m 5m > out 2>&1 || fail=1 - compare /dev/null out || fail=1 - - #make sure device name is correct --test -e ${dev}p1 || fail=1 -+wait_for_dev_to_appear_ ${dev}p1 || fail=1 - - #repeat on name not ending in a digit - # setup: create a mapping -@@ -66,7 +66,7 @@ parted -s $dev mklabel msdos mkpart primary fat32 1m 5m > out 2>&1 || fail=1 - compare /dev/null out || fail=1 - - #make sure device name is correct --test -e ${dev}1 || fail=1 -+wait_for_dev_to_appear_ ${dev}1 || fail=1 - - if [ -n "$fail" ]; then - ls /dev/mapper -diff --git a/tests/t6004-dm-many-partitions.sh b/tests/t6004-dm-many-partitions.sh -index 8d291ef55664..7ebc48a18db8 100755 ---- a/tests/t6004-dm-many-partitions.sh -+++ b/tests/t6004-dm-many-partitions.sh -@@ -49,10 +49,8 @@ parted -m -a min -s /dev/mapper/$dm_name mklabel gpt $cmd > /dev/null 2>&1 || fa - - # Make sure all the partitions appeared under /dev/mapper/ - for ((i=1; i<=$n_partitions; i+=1)); do -- if [ ! -e "/dev/mapper/${dm_name}p$i" ]; then -- fail=1 -- break -- fi -+ wait_for_dev_to_appear_ "/dev/mapper/${dm_name}p$i" || { fail=1; break; } -+ - # remove the partitions as we go, otherwise cleanup won't work. - dmsetup remove /dev/mapper/${dm_name}p$i - done -diff --git a/tests/t6100-mdraid-partitions.sh b/tests/t6100-mdraid-partitions.sh -index 6f08442dd66d..dbc5986b9019 100755 ---- a/tests/t6100-mdraid-partitions.sh -+++ b/tests/t6100-mdraid-partitions.sh -@@ -54,13 +54,14 @@ parted -s $md_dev mklabel gpt \ - compare /dev/null out || fail=1 - - # Verify that kernel has been informed about the second device. --grep "${md_name}p2" /proc/partitions || { fail=1; cat /proc/partitions; } -+wait_for_dev_to_appear_ ${md_dev}p2 || { fail=1; cat /proc/partitions; } - - # Remove partitions from the raid device. - parted -s $md_dev rm 2 rm 1 > out 2>&1 || fail=1 - compare /dev/null out || fail=1 - - # Verify that kernel has been informed about those removals. --grep "${md_name}p[12]" /proc/partitions && { fail=1; cat /proc/partitions; } -+wait_for_dev_to_disappear_ ${md_dev}p1 2 || { fail=1; cat /proc/partitions; } -+wait_for_dev_to_disappear_ ${md_dev}p2 2 || { fail=1; cat /proc/partitions; } - - Exit $fail -diff --git a/tests/t9041-undetected-in-use-16th-partition.sh b/tests/t9041-undetected-in-use-16th-partition.sh -index edaae1bf8116..673e508319a3 100644 ---- a/tests/t9041-undetected-in-use-16th-partition.sh -+++ b/tests/t9041-undetected-in-use-16th-partition.sh -@@ -72,7 +72,7 @@ wait_for_dev_to_appear_ ${scsi_dev}16 || fail_ ${scsi_dev}16 did not appear - - partitions="${scsi_dev}14 ${scsi_dev}15 ${scsi_dev}16" - for i in $partitions; do -- mkfs.ext3 $i || skip_ mkfs.ext3 $i failed -+ mkfs.ext3 $i || fail=1 - done - - # be sure to unmount upon interrupt, failure, etc. diff --git a/tests-wait_for_-loop.patch b/tests-wait_for_-loop.patch deleted file mode 100644 index dc763a7..0000000 --- a/tests-wait_for_-loop.patch +++ /dev/null @@ -1,119 +0,0 @@ -From: "Brian C. Lane" -Date: Tue, 1 Mar 2016 10:38:26 -0800 -Subject: tests: Add udevadm settle to wait_for_ loop (#1260664) -For: upstream code -Patch-mainline: v3.3 -Git-commit: f5cc84cdb5a607449c339cad50fe8be5dd77eb6c - -Sometimes the device will vanish after the wait_for_dev_to_appear exits. -Add udevadm settle in an attempt to make sure the udev system is done -flapping around and the device will stay in place. - -Related: rhbz#1260664 -Acked-by: Sebastian Parschauer ---- - tests/t-lib-helpers.sh | 2 ++ - tests/t-local.sh | 2 ++ - tests/t6001-psep.sh | 2 ++ - tests/t6004-dm-many-partitions.sh | 1 + - tests/t6005-dm-uuid.sh | 2 ++ - tests/t6100-mdraid-partitions.sh | 1 + - 6 files changed, 10 insertions(+) - -diff --git a/tests/t-lib-helpers.sh b/tests/t-lib-helpers.sh -index c8684bbd264e..93123432922b 100644 ---- a/tests/t-lib-helpers.sh -+++ b/tests/t-lib-helpers.sh -@@ -377,6 +377,7 @@ wait_for_dev_to_appear_() - local i=0 - local incr=1 - while :; do -+ udevadm settle - ls "$file" > /dev/null 2>&1 && return 0 - sleep .1 2>/dev/null || { sleep 1; incr=10; } - i=$(expr $i + $incr); test $i = 20 && break -@@ -392,6 +393,7 @@ wait_for_dev_to_disappear_() - local i=0 - local incr=1 - while :; do -+ udevadm settle - ls "$file" > /dev/null 2>&1 || return 0 - sleep .1 2>/dev/null || { sleep 1; incr=10; } - i=$(expr $i + $incr); test $i -ge $(expr $n_sec \* 10) && break -diff --git a/tests/t-local.sh b/tests/t-local.sh -index b40a5a0ebbf5..a7d5226a3956 100644 ---- a/tests/t-local.sh -+++ b/tests/t-local.sh -@@ -47,6 +47,7 @@ wait_for_dev_to_appear_() - local i=0 - local incr=1 - while :; do -+ udevadm settle - ls "$file" > /dev/null 2>&1 && return 0 - sleep .1 2>/dev/null || { sleep 1; incr=10; } - i=$(expr $i + $incr); test $i = 20 && break -@@ -110,6 +111,7 @@ scsi_debug_setup_() - local i=0 - local new_dev - while :; do -+ udevadm settle - new_dev=$(new_sdX_) && break - sleep .1 2>/dev/null || { sleep 1; incr=10; } - i=$(expr $i + $incr); test $i = 20 && break -diff --git a/tests/t6001-psep.sh b/tests/t6001-psep.sh -index 4c758e8fbc73..2985cf5e7d0e 100644 ---- a/tests/t6001-psep.sh -+++ b/tests/t6001-psep.sh -@@ -19,6 +19,8 @@ - . "${srcdir=.}/init.sh"; path_prepend_ ../parted - - require_root_ -+require_udevadm_settle_ -+ - (dmsetup --help) > /dev/null 2>&1 || skip_test_ "No dmsetup installed" - - # Device maps names - should be random to not conflict with existing ones on -diff --git a/tests/t6004-dm-many-partitions.sh b/tests/t6004-dm-many-partitions.sh -index 7ebc48a18db8..01d7fc0da8f3 100755 ---- a/tests/t6004-dm-many-partitions.sh -+++ b/tests/t6004-dm-many-partitions.sh -@@ -20,6 +20,7 @@ - . "${srcdir=.}/init.sh"; path_prepend_ ../parted - - require_root_ -+require_udevadm_settle_ - (dmsetup --help) > /dev/null 2>&1 || skip_test_ "No dmsetup installed" - - ss=$sector_size_ -diff --git a/tests/t6005-dm-uuid.sh b/tests/t6005-dm-uuid.sh -index ce1251a9f16a..a48ae727f940 100755 ---- a/tests/t6005-dm-uuid.sh -+++ b/tests/t6005-dm-uuid.sh -@@ -20,6 +20,7 @@ - . "${srcdir=.}/init.sh"; path_prepend_ ../parted - - require_root_ -+require_udevadm_settle_ - (dmsetup --help) > /dev/null 2>&1 || skip_test_ "No dmsetup installed" - - ss=$sector_size_ -@@ -46,6 +47,7 @@ for ((i=1; i<=$n_partitions; i+=1)); do - cmd="$cmd mkpart p$i ${s}s ${s}s" - done - parted -m -a min -s /dev/mapper/$dm_name mklabel gpt $cmd > /dev/null 2>&1 || fail=1 -+wait_for_dev_to_appear_ /dev/mapper/${dm_name}p${n_partitions} || fail=1 - - # Make sure all the partitions have UUIDs - for ((i=1; i<=$n_partitions; i+=1)); do -diff --git a/tests/t6100-mdraid-partitions.sh b/tests/t6100-mdraid-partitions.sh -index dbc5986b9019..dbb16861f9f3 100755 ---- a/tests/t6100-mdraid-partitions.sh -+++ b/tests/t6100-mdraid-partitions.sh -@@ -38,6 +38,7 @@ parted -s "$scsi_dev" mklabel gpt \ - mkpart p1 ext2 1M 4M \ - mkpart p2 ext2 5M 8M > out 2>&1 || fail=1 - compare /dev/null out || fail=1 -+wait_for_dev_to_appear_ ${scsi_dev}2 || { fail=1; cat /proc/partitions; } - - cleanup_fn_() { - # stop mdraid array