diff --git a/0060-udev-rules-introduce-rules-for-cluster-md-to-confirm.patch b/0060-udev-rules-introduce-rules-for-cluster-md-to-confirm.patch new file mode 100644 index 0000000..6624fd4 --- /dev/null +++ b/0060-udev-rules-introduce-rules-for-cluster-md-to-confirm.patch @@ -0,0 +1,68 @@ +From 7a717ada3297bef83c1f70c6baa50ea15ed10fd1 Mon Sep 17 00:00:00 2001 +From: Guoqing Jiang +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 +Signed-off-by: Jes Sorensen +--- + 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 + diff --git a/mdadm.changes b/mdadm.changes index 313eee9..6533a30 100644 --- a/mdadm.changes +++ b/mdadm.changes @@ -1,3 +1,9 @@ +------------------------------------------------------------------- +Fri Nov 24 01:26:09 UTC 2017 - gqjiang@suse.com + +- 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 - rbrown@suse.com diff --git a/mdadm.spec b/mdadm.spec index 7347c79..aca02e6 100644 --- a/mdadm.spec +++ b/mdadm.spec @@ -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 @@ -103,6 +103,7 @@ 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) @@ -174,6 +175,7 @@ programs but with a very different interface. %patch57 -p1 %patch58 -p1 %patch59 -p1 +%patch60 -p1 %patch1000 -p1 %build @@ -229,6 +231,7 @@ ln -s %{_sbindir}/service %{buildroot}%{_sbindir}/rcmdmonitor %{_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