From: Guoqing Jiang Date: Wed, 2 Aug 2017 02:05:41 +0000 (+0800) Subject: udev rules: introduce rules for cluster-md to confirm device X-Git-Tag: mdadm-4.1-rc1~104 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0e23c597188a65bdf6cd39fafbf596f2317344da;p=thirdparty%2Fmdadm.git 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. Signed-off-by: Guoqing Jiang Signed-off-by: Jes Sorensen --- diff --git a/Makefile b/Makefile index 021d3adf..0977f27d 100644 --- a/Makefile +++ b/Makefile @@ -256,8 +256,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 udev-md-raid-creating.rules - @for file in 01-md-raid-creating.rules 63-md-raid-arrays.rules 64-md-raid-assembly.rules ; \ +install-udev: udev-md-raid-arrays.rules udev-md-raid-assembly.rules udev-md-raid-creating.rules \ + udev-md-clustered-confirm-device.rules + @for file in 01-md-raid-creating.rules 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 00000000..3e5381e1 --- /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"