commit parted for openSUSE:Factory
Hello community, here is the log from the commit of package parted for openSUSE:Factory checked in at 2017-11-16 13:57:39 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/parted (Old) and /work/SRC/openSUSE:Factory/.parted.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Package is "parted" Thu Nov 16 13:57:39 2017 rev:119 rq:541562 version:3.2 Changes: -------- --- /work/SRC/openSUSE:Factory/parted/parted.changes 2017-09-15 21:08:51.340341144 +0200 +++ /work/SRC/openSUSE:Factory/.parted.new/parted.changes 2017-11-16 13:57:43.372781439 +0100 @@ -1,0 +2,21 @@ +Mon Nov 13 17:17:40 CET 2017 - sparschauer@suse.de + +- Escape printed device path in machine mode (bsc#1066467) + - add: parted-escape-printed-device-path.patch + +------------------------------------------------------------------- +Mon Oct 23 18:18:36 CEST 2017 - sparschauer@suse.de + +- Add support for NVDIMM devices (bsc#1064446) + - add: libparted-Add-support-for-NVDIMM-devices.patch + - add: libparted-fix-NVDIMM-partition-naming.patch) + +------------------------------------------------------------------- +Wed Sep 20 10:00:07 UTC 2017 - sparschauer@suse.de + +- Prepare to fix the resizepart command (bsc#1058667) + - add: libparted-BLKPG_RESIZE_PARTITION-uses-bytes.patch + - add: libparted-fix-udev-cookie-leak.patch + - add: tests-check-extended-partition-length.patch + +------------------------------------------------------------------- New: ---- libparted-Add-support-for-NVDIMM-devices.patch libparted-BLKPG_RESIZE_PARTITION-uses-bytes.patch libparted-fix-NVDIMM-partition-naming.patch libparted-fix-udev-cookie-leak.patch parted-escape-printed-device-path.patch tests-check-extended-partition-length.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ parted.spec ++++++ --- /var/tmp/diff_new_pack.xtpTwS/_old 2017-11-16 13:57:44.900726080 +0100 +++ /var/tmp/diff_new_pack.xtpTwS/_new 2017-11-16 13:57:44.908725790 +0100 @@ -78,6 +78,12 @@ 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 +# Fatresize Patch100: parted-fatresize-autoconf.patch # Upstream tests patches Patch150: tests-set-optimal-blocks-for-scsi_debug.patch @@ -85,6 +91,7 @@ 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 # SUSE tests patches Patch200: tests-adapt-to-SUSE.patch BuildRequires: check-devel @@ -178,12 +185,18 @@ %patch50 -p1 %patch51 -p1 %patch52 -p1 +%patch53 -p1 +%patch54 -p1 +%patch55 -p1 +%patch56 -p1 +%patch57 -p1 %patch100 -p1 %patch150 -p1 %patch151 -p1 %patch152 -p1 %patch153 -p1 %patch154 -p1 +%patch155 -p1 %patch200 -p1 %build ++++++ libparted-Add-support-for-NVDIMM-devices.patch ++++++ From: Sebastian Parschauer <sparschauer@suse.de> Date: Mon, 23 Oct 2017 17:47:47 +0200 Subject: Add support for NVDIMM devices References: bsc#1064446 Patch-mainline: submitted, 2017-10-24 10:22 +0200 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 <sparschauer@suse.de> --- 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 (); ++++++ libparted-BLKPG_RESIZE_PARTITION-uses-bytes.patch ++++++ From: "Brian C. Lane" <bcl@redhat.com> 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 <sparschauer@suse.de> --- 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; ++++++ libparted-fix-NVDIMM-partition-naming.patch ++++++ From: Sebastian Parschauer <sparschauer@suse.de> Date: Mon, 23 Oct 2017 17:47:47 +0200 Subject: libparted: Fix NVDIMM partition naming References: bsc#1064446 Patch-mainline: no, required to fix custom SUSE device naming Signed-off-by: Sebastian Parschauer <sparschauer@suse.de> --- a/libparted/arch/linux.c +++ b/libparted/arch/linux.c @@ -2437,6 +2437,7 @@ _device_get_part_path (PedDevice const * const char *p; if (dev->type == PED_DEVICE_CPQARRAY || dev->type == PED_DEVICE_NVME || + dev->type == PED_DEVICE_PMEM || dev->type == PED_DEVICE_SDMMC) p = "p"; else if (dev->type == PED_DEVICE_DM) ++++++ libparted-fix-udev-cookie-leak.patch ++++++ From: "Brian C. Lane" <bcl@redhat.com> 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 <sparschauer@suse.de> --- 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 ++++++ parted-escape-printed-device-path.patch ++++++ From: Sebastian Parschauer <sparschauer@suse.de> Date: Tue, 7 Nov 2017 20:14:06 +0100 Subject: parted: Escape printed device path in machine mode References: bsc#1066467 Patch-mainline: submitted, 2017-11-07 The function _print_disk_info() uses the colon ':' as the separator but the device path it prints can contain that character as well. In that case parsing fails. So introduce the function _escape_machine_string() to allocate an output string twice as big as the input string and escape ':' and '\' with a '\'. Print the escaped path and free it again. Ignore the NULL pointer dereference in out-of-memory situation like it is done for the other allocations in _print_disk_info() as well. Resolves: bsc#1066467 Reported-by: Arvin Schnell <aschnell@suse.com> Signed-off-by: Sebastian Parschauer <sparschauer@suse.de> --- 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 free (cyl_size); } +static char * +_escape_machine_string (const char *str) +{ + size_t i, j; + char *dest; + + dest = ped_malloc ((strlen(str) + 1) * 2); + if (!dest) + return NULL; + + for (i = 0, j = 0; str[i] != '\0'; i++, j++) { + switch (str[i]) { + case ':': + case '\\': + dest[j++] = '\\'; + default: + dest[j] = str[i]; + break; + } + } + dest[j] = '\0'; + return dest; +} + static void _print_disk_info (const PedDevice *dev, const PedDisk *diskp) { @@ -1058,6 +1082,8 @@ _print_disk_info (const PedDevice *dev, char *disk_flags = disk_print_flags (diskp); if (opt_machine_mode) { + char *path = _escape_machine_string (dev->path); + switch (default_unit) { case PED_UNIT_CHS: puts ("CHS;"); break; @@ -1068,9 +1094,10 @@ _print_disk_info (const PedDevice *dev, } printf ("%s:%s:%s:%lld:%lld:%s:%s:%s;\n", - dev->path, end, transport[dev->type], + path, end, transport[dev->type], dev->sector_size, dev->phys_sector_size, pt_name, dev->model, disk_flags); + free(path); } else { printf (_("Model: %s (%s)\n"), dev->model, transport[dev->type]); ++++++ tests-check-extended-partition-length.patch ++++++ From: "Brian C. Lane" <bcl@redhat.com> 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 <sparschauer@suse.de> --- 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 <http://www.gnu.org/licenses/>. + +. "${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
participants (1)
-
root@hilbert.suse.de