diff --git a/Makefile b/Makefile index 021d3ad..0977f27 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 0000000..3e5381e --- /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"