summaryrefslogtreecommitdiffstats
path: root/udev-md-clustered-confirm-device.rules
diff options
context:
space:
mode:
authorGuoqing Jiang <gqjiang@suse.com>2017-08-02 04:05:41 +0200
committerJes Sorensen <jsorensen@fb.com>2017-08-02 15:30:51 +0200
commit0e23c597188a65bdf6cd39fafbf596f2317344da (patch)
treebad7e0b6695abfe90226f7ed88b035750b5bb3ba /udev-md-clustered-confirm-device.rules
parentmdadm/r5cache: allow adding journal to array without journal (diff)
downloadmdadm-0e23c597188a65bdf6cd39fafbf596f2317344da.tar.xz
mdadm-0e23c597188a65bdf6cd39fafbf596f2317344da.zip
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 <gqjiang@suse.com> Signed-off-by: Jes Sorensen <jsorensen@fb.com>
Diffstat (limited to 'udev-md-clustered-confirm-device.rules')
-rw-r--r--udev-md-clustered-confirm-device.rules21
1 files changed, 21 insertions, 0 deletions
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"