Accepting request 545003 from home:gqjiang:branches:Base:System

For fate#316335: Add udev rules for cluster-md to confirm device

OBS-URL: https://build.opensuse.org/request/show/545003
OBS-URL: https://build.opensuse.org/package/show/Base:System/mdadm?expand=0&rev=154
This commit is contained in:
Neil Brown 2017-11-24 04:12:35 +00:00 committed by Git OBS Bridge
parent ee7d0fd7bc
commit 81b5777cbc
3 changed files with 78 additions and 1 deletions

View File

@ -0,0 +1,68 @@
From 7a717ada3297bef83c1f70c6baa50ea15ed10fd1 Mon Sep 17 00:00:00 2001
From: Guoqing Jiang <gqjiang@suse.com>
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 <gqjiang@suse.com>
Signed-off-by: Jes Sorensen <jsorensen@fb.com>
---
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

View File

@ -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

View File

@ -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