>>>>> "Guoqing" == Guoqing Jiang <gqjiang@xxxxxxxx> writes: Guoqing> For cluster scenario, add device is different with native raid. Guoqing> When a node issues adds a device, then the node will broadcast Guoqing> a message with UUID to other nodes in the cluster. If receiving Guoqing> node can find the device with the specific UUID, it must confirm Guoqing> the device, otherwise reports it is missing. Guoqing> Signed-off-by: Guoqing Jiang <gqjiang@xxxxxxxx> Guoqing> --- Guoqing> Makefile | 6 ++++-- Guoqing> udev-md-clustered-confirm-device.rules | 21 +++++++++++++++++++++ Guoqing> 2 files changed, 25 insertions(+), 2 deletions(-) Guoqing> create mode 100644 udev-md-clustered-confirm-device.rules Guoqing> diff --git a/Makefile b/Makefile Guoqing> index 021d3ad..0977f27 100644 Guoqing> --- a/Makefile Guoqing> +++ b/Makefile Guoqing> @@ -256,8 +256,10 @@ install-man: mdadm.8 md.4 mdadm.conf.5 mdmon.8 Guoqing> $(INSTALL) -D -m 644 md.4 $(DESTDIR)$(MAN4DIR)/md.4 Guoqing> $(INSTALL) -D -m 644 mdadm.conf.5 $(DESTDIR)$(MAN5DIR)/mdadm.conf.5 Guoqing> -install-udev: udev-md-raid-arrays.rules udev-md-raid-assembly.rules udev-md-raid-creating.rules Guoqing> - @for file in 01-md-raid-creating.rules 63-md-raid-arrays.rules 64-md-raid-assembly.rules ; \ Guoqing> +install-udev: udev-md-raid-arrays.rules udev-md-raid-assembly.rules udev-md-raid-creating.rules \ Guoqing> + udev-md-clustered-confirm-device.rules You have udev-md-clustered-.... here, but down below you use clustermd-end in your names. Which I find slightly annoying because they're different. Just me being annoying here. :-) I didn't check if the other raid rules have this issue as well. Guoqing> + @for file in 01-md-raid-creating.rules 63-md-raid-arrays.rules 64-md-raid-assembly.rules \ Guoqing> + 69-md-clustered-confirm-device.rules ; \ Guoqing> do sed -e 's,BINDIR,$(BINDIR),g' udev-$${file#??-} > .install.tmp.1 && \ Guoqing> $(ECHO) $(INSTALL) -D -m 644 udev-$${file#??-} $(DESTDIR)$(UDEVDIR)/rules.d/$$file ; \ Guoqing> $(INSTALL) -D -m 644 .install.tmp.1 $(DESTDIR)$(UDEVDIR)/rules.d/$$file ; \ Guoqing> diff --git a/udev-md-clustered-confirm-device.rules b/udev-md-clustered-confirm-device.rules Guoqing> new file mode 100644 Guoqing> index 0000000..3e5381e Guoqing> --- /dev/null Guoqing> +++ b/udev-md-clustered-confirm-device.rules Guoqing> @@ -0,0 +1,21 @@ Guoqing> +# do not edit this file, it will be overwritten on update Guoqing> + Guoqing> +SUBSYSTEM!="block", GOTO="clustermd_end" Guoqing> + Guoqing> +# handle md arrays Guoqing> +KERNEL!="md*", GOTO="clustermd_end" Guoqing> +ENV{DEVTYPE}!="disk", GOTO="clustermd_end" Guoqing> +ACTION!="change", GOTO="clustermd_end" Guoqing> +ENV{EVENT}!="ADD_DEVICE", GOTO="clustermd_end" Guoqing> +ENV{DEVICE_UUID}!="?*", GOTO="clustermd_end" Guoqing> +ENV{RAID_DISK}!="?*", GOTO="clustermd_end" Guoqing> + Guoqing> +# Based on the received UUID, node confirms the device if Guoqing> +# it is found by blkid, otherwise the node reports it is Guoqing> +# missing. Guoqing> +PROGRAM="BINDIR/blkid -o device -t UUID_SUB=$env{DEVICE_UUID}", ENV{.md.newdevice} = "$result" Guoqing> + Guoqing> +ENV{.md.newdevice}!="", RUN+="BINDIR/mdadm --manage $env{DEVNAME} --cluster-confirm $env{RAID_DISK}:$env{.md.newdevice}" Guoqing> +ENV{.md.newdevice}=="", RUN+="BINDIR/mdadm --manage $env{DEVNAME} --cluster-confirm $env{RAID_DISK}:missing" Guoqing> + Guoqing> +LABEL="clustermd_end" Guoqing> -- Guoqing> 2.10.0 Guoqing> -- Guoqing> To unsubscribe from this list: send the line "unsubscribe linux-raid" in Guoqing> the body of a message to majordomo@xxxxxxxxxxxxxxx Guoqing> More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe linux-raid" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html