Hello community, here is the log from the commit of package parted for openSUSE:Factory checked in at 2018-02-25 12:20:39 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/parted (Old) and /work/SRC/openSUSE:Factory/.parted.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "parted" Sun Feb 25 12:20:39 2018 rev:124 rq:578411 version:3.2 Changes: -------- --- /work/SRC/openSUSE:Factory/parted/parted.changes 2018-01-30 15:38:07.116210514 +0100 +++ /work/SRC/openSUSE:Factory/.parted.new/parted.changes 2018-02-25 12:20:43.347112500 +0100 @@ -1,0 +2,20 @@ +Tue Feb 20 15:11:35 UTC 2018 - [email protected] + +- libparted: Canonicalize /dev/md/ paths (bsc#1078820) + - add: libparted-canonicalize-dev-md-paths.patch + - add: tests-add-helper-require_swap_.patch + - add: tests-add-dev-md-check-to-t6100.patch + +------------------------------------------------------------------- +Mon Feb 19 16:01:51 UTC 2018 - [email protected] + +- libparted: Fix partition device naming for all devices + (bsc#1078820, bsc#1081547) + - The "_part%d" suffix which has been used for SLE10 compatibility + is wrong now as the kernel does not use that any more and + uses "p%d" instead. + - amend: libparted-partition-naming.patch + - refresh: libparted-fix-nvme-partition-naming.patch + - refresh: libparted-fix-NVDIMM-partition-naming.patch + +------------------------------------------------------------------- New: ---- libparted-canonicalize-dev-md-paths.patch tests-add-dev-md-check-to-t6100.patch tests-add-helper-require_swap_.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ parted.spec ++++++ --- /var/tmp/diff_new_pack.4OP1Sv/_old 2018-02-25 12:20:44.891056580 +0100 +++ /var/tmp/diff_new_pack.4OP1Sv/_new 2018-02-25 12:20:44.895056435 +0100 @@ -86,6 +86,7 @@ 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 # Fatresize Patch100: parted-fatresize-autoconf.patch Patch101: fatresize-fix-getting-dev-name.patch @@ -96,6 +97,9 @@ Patch153: tests-wait_for_-loop.patch Patch154: tests-update-t0220-t0280-for-swap-flag.patch Patch155: tests-check-extended-partition-length.patch +Patch156: tests-add-helper-require_swap_.patch +Patch157: tests-add-dev-md-check-to-t6100.patch + # SUSE tests patches Patch200: tests-adapt-to-SUSE.patch BuildRequires: check-devel @@ -196,6 +200,7 @@ %patch58 -p1 %patch59 -p1 %patch60 -p1 +%patch61 -p1 %patch100 -p1 %patch101 -p1 %patch150 -p1 @@ -204,6 +209,8 @@ %patch153 -p1 %patch154 -p1 %patch155 -p1 +%patch156 -p1 +%patch157 -p1 %patch200 -p1 %build ++++++ libparted-canonicalize-dev-md-paths.patch ++++++ From: Sebastian Parschauer <[email protected]> Date: Mon, 19 Feb 2018 17:45:32 +0100 Subject: libparted: Canonicalize /dev/md/ paths References: bsc#1078820 Patch-mainline: submitted, 2018-02-20 The BLKPG* ioctl handling relies on getting the current partitions from /sys/block/$devname/. With an md name like e.g. "vol0", the block device to be used cannot be found and the BLKPG* ioctls are used for all partitions. So canonicalize /dev/md/ paths as well. Test: t6100-mdraid-partitions Signed-off-by: Sebastian Parschauer <[email protected]> --- libparted/device.c | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/libparted/device.c b/libparted/device.c index 36fecd2..2fd3c2f 100644 --- a/libparted/device.c +++ b/libparted/device.c @@ -152,11 +152,8 @@ ped_device_get (const char* path) char* normal_path = NULL; PED_ASSERT (path != NULL); - /* Don't canonicalize /dev/mapper or /dev/md/ paths, see - tests/symlink.c - */ - if (strncmp (path, "/dev/mapper/", 12) && - strncmp (path, "/dev/md/", 8)) + /* Don't canonicalize /dev/mapper/ paths. */ + if (strncmp (path, "/dev/mapper/", 12)) normal_path = canonicalize_file_name (path); if (!normal_path) /* Well, maybe it is just that the file does not exist. ++++++ libparted-fix-NVDIMM-partition-naming.patch ++++++ --- /var/tmp/diff_new_pack.4OP1Sv/_old 2018-02-25 12:20:45.031051509 +0100 +++ /var/tmp/diff_new_pack.4OP1Sv/_new 2018-02-25 12:20:45.031051509 +0100 @@ -5,13 +5,19 @@ Patch-mainline: no, required to fix custom SUSE device naming Signed-off-by: Sebastian Parschauer <[email protected]> +--- + 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 -@@ -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) +@@ -2439,6 +2439,7 @@ _device_get_part_path (PedDevice const *dev, int num) + dev->type == PED_DEVICE_CPQARRAY || + dev->type == PED_DEVICE_DAC960 || + 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-nvme-partition-naming.patch ++++++ --- /var/tmp/diff_new_pack.4OP1Sv/_old 2018-02-25 12:20:45.039051219 +0100 +++ /var/tmp/diff_new_pack.4OP1Sv/_new 2018-02-25 12:20:45.039051219 +0100 @@ -3,18 +3,18 @@ References: bsc#982169 Patch-mainline: no, required to fix custom SUSE device naming --- - libparted/arch/linux.c | 1 + + libparted/arch/linux.c | 1 + 1 file changed, 1 insertion(+) -Index: parted-3.2/libparted/arch/linux.c -=================================================================== ---- parted-3.2.orig/libparted/arch/linux.c -+++ parted-3.2/libparted/arch/linux.c -@@ -2411,6 +2411,7 @@ _device_get_part_path (PedDevice const * - } else { - const char *p; - if (dev->type == PED_DEVICE_CPQARRAY || -+ dev->type == PED_DEVICE_NVME || - dev->type == PED_DEVICE_SDMMC) - p = "p"; - else if (dev->type == PED_DEVICE_DM) +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) + if (dev->type == PED_DEVICE_ATARAID || + dev->type == PED_DEVICE_CPQARRAY || + dev->type == PED_DEVICE_DAC960 || ++ dev->type == PED_DEVICE_NVME || + dev->type == PED_DEVICE_SDMMC) + p = "p"; + else if (dev->type == PED_DEVICE_DM) ++++++ libparted-partition-naming.patch ++++++ --- /var/tmp/diff_new_pack.4OP1Sv/_old 2018-02-25 12:20:45.059050495 +0100 +++ /var/tmp/diff_new_pack.4OP1Sv/_new 2018-02-25 12:20:45.059050495 +0100 @@ -3,46 +3,49 @@ References: bsc#1056508 Patch-mainline: no, custom SUSE patch -Device mapper partitions should always use the suffix "-part%d" -for partition names. CPQ arrays and SDMMC devices should always -use the "p%d" suffix. DAC960, ATARAID, and devices with a trailing -number in their name should always use the "_part%d" suffix. -All other devices should use the "%d" suffix. +Device mapper partitions always use the suffix "-part%d" for +partition names. Other devices with a trailing number in their +name use the "p%d" suffix. All other devices use the "%d" suffix. YaST depends on this. [mwilck: Fixed dm part name in _dm_add_partition(), bsc#1056508] [sparschauer: Fixed dm part name in _dm_resize_partition(), bsc#1056508] [sparschauer: Wrote the patch description] +[sparschauer: Dropped "_part" suffix, bsc#1078820, bsc#1081547] Signed-off-by: Sebastian Parschauer <[email protected]> --- - libparted/arch/linux.c | 14 ++++++++++---- - 1 file changed, 10 insertions(+), 4 deletions(-) + 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 * +@@ -2342,11 +2342,17 @@ _device_get_part_path (PedDevice const *dev, int num) result = zasprintf ("%.*s/part%d", (int) (path_len - 5), devpath, num); } else { - char const *p = (dev->type == PED_DEVICE_DAC960 - || dev->type == PED_DEVICE_CPQARRAY -+ const char *p; -+ if (dev->type == PED_DEVICE_CPQARRAY || -+ dev->type == PED_DEVICE_SDMMC) -+ p = "p"; -+ else if (dev->type == PED_DEVICE_DM) -+ p = "-part"; -+ else -+ p = (dev->type == PED_DEVICE_DAC960 - || dev->type == PED_DEVICE_ATARAID - || isdigit (devpath[path_len - 1]) +- || dev->type == PED_DEVICE_ATARAID +- || isdigit (devpath[path_len - 1]) - ? "p" : ""); -+ ? "_part" : ""); ++ const char *p; ++ if (dev->type == PED_DEVICE_ATARAID || ++ dev->type == PED_DEVICE_CPQARRAY || ++ dev->type == PED_DEVICE_DAC960 || ++ dev->type == PED_DEVICE_SDMMC) ++ p = "p"; ++ else if (dev->type == PED_DEVICE_DM) ++ p = "-part"; ++ else ++ p = (isdigit (devpath[path_len - 1]) ++ ? "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 +@@ -2797,7 +2803,7 @@ _dm_add_partition (PedDisk* disk, const PedPartition* part) size_t name_len = strlen (dev_name); vol_name = zasprintf ("%s%s%d", dev_name, @@ -51,7 +54,7 @@ part->num); if (vol_name == NULL) goto err; -@@ -2870,7 +2876,7 @@ _dm_resize_partition (PedDisk* disk, con +@@ -2870,7 +2876,7 @@ _dm_resize_partition (PedDisk* disk, const PedPartition* part) size_t name_len = strlen (dev_name); vol_name = zasprintf ("%s%s%d", dev_name, ++++++ tests-add-dev-md-check-to-t6100.patch ++++++ From: Sebastian Parschauer <[email protected]> Date: Tue, 20 Feb 2018 12:16:26 +0100 Subject: tests: Add /dev/md/ check to t6100 For: libparted-canonicalize-dev-md-paths.patch References: bsc#1078820 Patch-mainline: submitted, 2018-02-20 The test t6100 checks creating two partitions with /dev/md99 and a gpt disk label. But using an md name with the symlink in /dev/md/ is not tested. That path might not be canonicalized and the BLKPG* handling cannot find the existing partitions in /sys/block/$dev/. That can be observed when creating the second partition while the first one is in use. So move common code to new functions create_mddev() and remove_mdparts(), check if the swap tools are available, retest with /dev/md/pedtest99, msdos disk label, and the first partition as swap. Signed-off-by: Sebastian Parschauer <[email protected]> --- 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 @@ -21,6 +21,7 @@ require_root_ require_scsi_debug_module_ require_mdadm_ +require_swap_ # create memory-backed device scsi_debug_setup_ dev_size_mb=10 > dev-name || @@ -40,13 +41,27 @@ 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" +} + cleanup_fn_() { # stop mdraid array 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" +remove_mdparts() { + # 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. + 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; } +} + +create_mddev # 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 # Verify that kernel has been informed about the second device. 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 +remove_mdparts + +######################################################################## +# Second part with /dev/md/ symlink, msdos label and busy swap partition + +cleanup_fn_ + +# Arbitrary name, not likely to be used already +md_name=pedtest99 +md_dev=/dev/md/$md_name + +test -b $md_dev && skip_ "$md_dev already exists" + +create_mddev + +# create msdos and one partition on the raid device +parted -s $md_dev mklabel msdos \ + mkpart primary ext2 1M 2M > out 2>&1 || fail=1 +compare /dev/null out || fail=1 + +# Verify that kernel has been informed about the device. +wait_for_dev_to_appear_ ${md_dev}p1 || { fail=1; cat /proc/partitions; } + +# Create swap filesystem +mkswap -f ${md_dev}p1 || fail=1 + +# Use as swap to make it busy +swapon ${md_dev}p1 || fail=1 + +# create msdos and one partition on the raid device +parted -s $md_dev mkpart primary ext2 2M 3M > out 2>&1 || fail=1 compare /dev/null out || fail=1 -# Verify that kernel has been informed about those removals. -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; } +# Verify that kernel has been informed about the second device. +wait_for_dev_to_appear_ ${md_dev}p2 || { fail=1; cat /proc/partitions; } + +# Disable swap again +swapoff ${md_dev}p1 || warn_ "Failed to disable swap on ${md_dev}p1" + +remove_mdparts Exit $fail ++++++ tests-add-helper-require_swap_.patch ++++++ From: Sebastian Parschauer <[email protected]> Date: Tue, 20 Feb 2018 12:30:23 +0100 Subject: tests: Add helper 'require_swap_' For: libparted-canonicalize-dev-md-paths.patch References: bsc#1078820 Patch-mainline: submitted, 2018-02-20 To achieve that a partition is busy, it is easiest to use it as swap partition. So check if mkswap, swapon, and swapoff are available. Signed-off-by: Sebastian Parschauer <[email protected]> --- tests/t-lib-helpers.sh | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tests/t-lib-helpers.sh b/tests/t-lib-helpers.sh index 9312343..962b4f1 100644 --- a/tests/t-lib-helpers.sh +++ b/tests/t-lib-helpers.sh @@ -362,6 +362,12 @@ require_xfs_() mkfs.xfs -V || skip_ "this test requires XFS support" } +require_swap_() +{ + mkswap -V && swapon -V && swapoff -V || \ + skip_ "this test requires swap support" +} + require_dvhtool_() { dvhtool --help \
