Skip to content

Commit

Permalink
udev rules: introduce rules for cluster-md to confirm device
Browse files Browse the repository at this point in the history
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 <[email protected]>
Signed-off-by: Jes Sorensen <[email protected]>
  • Loading branch information
GuoqingJiang authored and Jes Sorensen committed Aug 2, 2017
1 parent 3373d49 commit 0e23c59
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 2 deletions.
6 changes: 4 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -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 ; \
Expand Down
21 changes: 21 additions & 0 deletions udev-md-clustered-confirm-device.rules
Original file line number Diff line number Diff line change
@@ -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"

0 comments on commit 0e23c59

Please sign in to comment.