Hello community,

here is the log from the commit of package mdadm for openSUSE:Factory checked 
in at 2017-11-25 08:40:35
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/mdadm (Old)
 and      /work/SRC/openSUSE:Factory/.mdadm.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "mdadm"

Sat Nov 25 08:40:35 2017 rev:110 rq:545008 version:4.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/mdadm/mdadm.changes      2017-08-24 
18:18:08.826879102 +0200
+++ /work/SRC/openSUSE:Factory/.mdadm.new/mdadm.changes 2017-11-25 
08:40:37.422706974 +0100
@@ -1,0 +2,18 @@
+Fri Nov 24 01:26:09 UTC 2017 - [email protected]
+
+- Add udev rules for cluster-md to confirm device (fate#316335)
+    0060-udev-rules-introduce-rules-for-cluster-md-to-confirm.patch 
+
+-------------------------------------------------------------------
+Thu Nov 23 13:40:30 UTC 2017 - [email protected]
+
+- Replace references to /var/adm/fillup-templates with new 
+  %_fillupdir macro (boo#1069468)
+
+-------------------------------------------------------------------
+Wed Nov 15 01:27:06 UTC 2017 - [email protected]
+
+- Add one mdadm patch to support clustered raid10 (fate#323171)
+    0059-To-support-clustered-raid10.patch
+
+-------------------------------------------------------------------

New:
----
  0059-To-support-clustered-raid10.patch
  0060-udev-rules-introduce-rules-for-cluster-md-to-confirm.patch

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ mdadm.spec ++++++
--- /var/tmp/diff_new_pack.vOS6Jf/_old  2017-11-25 08:40:39.150644017 +0100
+++ /var/tmp/diff_new_pack.vOS6Jf/_new  2017-11-25 08:40:39.154643872 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package mdadm
 #
-# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2017 SUSE LINUX Products GmbH, Nuernberg, Germany.
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -16,6 +16,11 @@
 #
 
 
+#Compat macro for new _fillupdir macro introduced in Nov 2017
+%if ! %{defined _fillupdir}
+  %define _fillupdir /var/adm/fillup-templates
+%endif
+
 Name:           mdadm
 Version:        4.0
 Release:        0
@@ -97,6 +102,8 @@
 Patch56:        0056-Add-sector-size-as-spare-selection-criterion.patch
 Patch57:        0057-super1-fix-sb-max_dev-when-adding-a-new-disk-in-line.patch
 Patch58:        0058-super1-only-set-clustered-flag-when-bitmap-is-presen.patch
+Patch59:        0059-To-support-clustered-raid10.patch
+Patch60:        0060-udev-rules-introduce-rules-for-cluster-md-to-confirm.patch
 Patch1000:      1000-The-mdcheck-script-now-adds-messages-to-the-system.patch
 
 %define _udevdir %(pkg-config --variable=udevdir udev)
@@ -167,6 +174,8 @@
 %patch56 -p1
 %patch57 -p1
 %patch58 -p1
+%patch59 -p1
+%patch60 -p1
 %patch1000 -p1
 
 %build
@@ -178,14 +187,14 @@
 %install
 make install install-systemd install-udev DESTDIR=%{buildroot} 
SYSTEMD_DIR=%{_unitdir} UDEVDIR=%{_udevdir} SUSE=yes
 rm -rf %{buildroot}/lib/udev
-install -d %{buildroot}%{_var}/adm/fillup-templates
+install -d %{buildroot}%{_fillupdir}
 install -d %{buildroot}/usr/share/mdadm
 install -m 755 misc/mdcheck %{buildroot}/usr/share/mdadm/mdcheck
 install -d %{buildroot}/etc/cron.daily
 install -d %{buildroot}/etc/cron.d
 install -m 755 %{S:7} %{buildroot}/etc/cron.daily/mdadm
 install -m 644 %{S:3} %{buildroot}/etc/cron.d/mdadm
-install -m 644 %{S:2} %{buildroot}%{_var}/adm/fillup-templates/
+install -m 644 %{S:2} %{buildroot}%{_fillupdir}/
 install -d %{buildroot}%{_systemdshutdowndir}
 install -d %{buildroot}%{_sbindir}
 ln -s %{_sbindir}/service %{buildroot}%{_sbindir}/rcmdmonitor
@@ -219,9 +228,10 @@
 %{_sbindir}/rcmdmonitor
 %dir /usr/share/mdadm
 /usr/share/mdadm/*
-%{_var}/adm/fillup-templates/sysconfig.mdadm
+%{_fillupdir}/sysconfig.mdadm
 %{_udevdir}/rules.d/63-md-raid-arrays.rules
 %{_udevdir}/rules.d/64-md-raid-assembly.rules
+%{_udevdir}/rules.d/69-md-clustered-confirm-device.rules
 %dir /etc/cron.daily
 /etc/cron.daily/mdadm
 %dir /etc/cron.d

++++++ 0059-To-support-clustered-raid10.patch ++++++
>From 5339f99606f19ce1eeadebf3c0849933dc0c6fd5 Mon Sep 17 00:00:00 2001
From: Guoqing Jiang <[email protected]>
Date: Mon, 30 Oct 2017 17:09:51 +0800
Subject: [PATCH] To support clustered raid10

We are now considering to extend clustered raid to
support raid10. But only near layout is supported,
so make the check when create the array or switch
the bitmap from internal to clustered.

Signed-off-by: Guoqing Jiang <[email protected]>
Signed-off-by: Jes Sorensen <[email protected]>
---
 Grow.c  |  6 ++++++
 mdadm.c |  9 +++++++--
 mdadm.h |  1 +
 util.c  | 11 +++++++++++
 4 files changed, 25 insertions(+), 2 deletions(-)

diff --git a/Grow.c b/Grow.c
index 0f9e89bcc5ba..80176e32c52f 100644
--- a/Grow.c
+++ b/Grow.c
@@ -359,6 +359,12 @@ int Grow_addbitmap(char *devname, int fd, struct context 
*c, struct shape *s)
 
                ncopies = (array.layout & 255) * ((array.layout >> 8) & 255);
                bitmapsize = bitmapsize * array.raid_disks / ncopies;
+
+               if (strcmp(s->bitmap_file, "clustered") == 0 &&
+                   !is_near_layout_10(array.layout)) {
+                       pr_err("only near layout is supported with clustered 
raid10\n");
+                       return 1;
+               }
        }
 
        st = super_by_fd(fd, &subarray);
diff --git a/mdadm.c b/mdadm.c
index 7cdcdba7c652..87cb33f84ac2 100644
--- a/mdadm.c
+++ b/mdadm.c
@@ -1542,8 +1542,13 @@ int main(int argc, char *argv[])
                                break;
                        }
 
-                       if (s.level != 1) {
-                               pr_err("--bitmap=clustered is currently 
supported with RAID mirror only\n");
+                       if (s.level != 1 && s.level != 10) {
+                               pr_err("--bitmap=clustered is currently 
supported with raid1/10 only\n");
+                               rv = 1;
+                               break;
+                       }
+                       if (s.level == 10 && !is_near_layout_10(s.layout)) {
+                               pr_err("only near layout is supported with 
clustered raid10\n");
                                rv = 1;
                                break;
                        }
diff --git a/mdadm.h b/mdadm.h
index 85947bf62ff0..3cbf82f18d9e 100644
--- a/mdadm.h
+++ b/mdadm.h
@@ -1434,6 +1434,7 @@ extern int get_linux_version(void);
 extern int mdadm_version(char *version);
 extern unsigned long long parse_size(char *size);
 extern int parse_uuid(char *str, int uuid[4]);
+extern int is_near_layout_10(int layout);
 extern int parse_layout_10(char *layout);
 extern int parse_layout_faulty(char *layout);
 extern long parse_num(char *num);
diff --git a/util.c b/util.c
index c11729e3260e..543ec6cf46ef 100644
--- a/util.c
+++ b/util.c
@@ -397,6 +397,17 @@ unsigned long long parse_size(char *size)
        return s;
 }
 
+int is_near_layout_10(int layout)
+{
+       int fc, fo;
+
+       fc = (layout >> 8) & 255;
+       fo = layout & (1 << 16);
+       if (fc > 1 || fo > 0)
+               return 0;
+       return 1;
+}
+
 int parse_layout_10(char *layout)
 {
        int copies, rv;
-- 
2.10.0

++++++ 0060-udev-rules-introduce-rules-for-cluster-md-to-confirm.patch ++++++
>From 7a717ada3297bef83c1f70c6baa50ea15ed10fd1 Mon Sep 17 00:00:00 2001
From: Guoqing Jiang <[email protected]>
Date: Wed, 22 Nov 2017 12:59:15 +0800
Subject: [PATCH] udev rules: introduce rules for cluster-md to confirm device

For cluster scenario, add device is different with native raid.
When a node issues adds a device, then the node will broadcast
a message with UUID to other nodes in the cluster. If receiving
node can find the device with the specific UUID, it must confirm
the device, otherwise reports it is missing.

[gqjiang: changed a little bit since difference context in Makefile]

Signed-off-by: Guoqing Jiang <[email protected]>
Signed-off-by: Jes Sorensen <[email protected]>
---
 Makefile                               |  6 ++++--
 udev-md-clustered-confirm-device.rules | 21 +++++++++++++++++++++
 2 files changed, 25 insertions(+), 2 deletions(-)
 create mode 100644 udev-md-clustered-confirm-device.rules

diff --git a/Makefile b/Makefile
index 5fd7f166e7e1..70df31267982 100644
--- a/Makefile
+++ b/Makefile
@@ -291,8 +291,10 @@ install-man: mdadm.8 md.4 mdadm.conf.5 mdmon.8
        $(INSTALL) -D -m 644 md.4 $(DESTDIR)$(MAN4DIR)/md.4
        $(INSTALL) -D -m 644 mdadm.conf.5 $(DESTDIR)$(MAN5DIR)/mdadm.conf.5
 
-install-udev: udev-md-raid-arrays.rules udev-md-raid-assembly.rules
-       @for file in 63-md-raid-arrays.rules 64-md-raid-assembly.rules ; \
+install-udev: udev-md-raid-arrays.rules udev-md-raid-assembly.rules \
+               udev-md-clustered-confirm-device.rules
+       @for file in 63-md-raid-arrays.rules 64-md-raid-assembly.rules \
+                       69-md-clustered-confirm-device.rules; \
        do sed -e 's,BINDIR,$(BINDIR),g' udev-$${file#??-} > .install.tmp.1 && \
           $(ECHO) $(INSTALL) -D -m 644 udev-$${file#??-} 
$(DESTDIR)$(UDEVDIR)/rules.d/$$file ; \
           $(INSTALL) -D -m 644 .install.tmp.1 
$(DESTDIR)$(UDEVDIR)/rules.d/$$file ; \
diff --git a/udev-md-clustered-confirm-device.rules 
b/udev-md-clustered-confirm-device.rules
new file mode 100644
index 000000000000..3e5381e19315
--- /dev/null
+++ b/udev-md-clustered-confirm-device.rules
@@ -0,0 +1,21 @@
+# do not edit this file, it will be overwritten on update
+
+SUBSYSTEM!="block", GOTO="clustermd_end"
+
+# handle md arrays
+KERNEL!="md*", GOTO="clustermd_end"
+ENV{DEVTYPE}!="disk", GOTO="clustermd_end"
+ACTION!="change", GOTO="clustermd_end"
+ENV{EVENT}!="ADD_DEVICE", GOTO="clustermd_end"
+ENV{DEVICE_UUID}!="?*", GOTO="clustermd_end"
+ENV{RAID_DISK}!="?*", GOTO="clustermd_end"
+
+# Based on the received UUID, node confirms the device if
+# it is found by blkid, otherwise the node reports it is
+# missing.
+PROGRAM="BINDIR/blkid -o device -t UUID_SUB=$env{DEVICE_UUID}", 
ENV{.md.newdevice} = "$result"
+
+ENV{.md.newdevice}!="", RUN+="BINDIR/mdadm --manage $env{DEVNAME} 
--cluster-confirm $env{RAID_DISK}:$env{.md.newdevice}"
+ENV{.md.newdevice}=="", RUN+="BINDIR/mdadm --manage $env{DEVNAME} 
--cluster-confirm $env{RAID_DISK}:missing"
+
+LABEL="clustermd_end"
-- 
2.10.0


Reply via email to