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 \

Reply via email to