From mboxrd@z Thu Jan 1 00:00:00 1970 From: Guoqing Jiang Subject: Re: [PATCH V2] udev rules: introduce rules for cluster-md to confirm device Date: Wed, 2 Aug 2017 09:53:18 +0800 Message-ID: <43faced1-8e60-0b95-ed6c-a570653f6880@suse.com> References: <20170801031504.8452-1-gqjiang@suse.com> <20170801081956.29777-1-gqjiang@suse.com> <87bmnzugzk.fsf@notabene.neil.brown.name> Mime-Version: 1.0 Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <87bmnzugzk.fsf@notabene.neil.brown.name> Sender: linux-raid-owner@vger.kernel.org To: NeilBrown , linux-raid@vger.kernel.org Cc: jes.sorensen@gmail.com List-Id: linux-raid.ids On 08/02/2017 05:15 AM, NeilBrown wrote: > On Tue, Aug 01 2017, Guoqing Jiang wrote: > >> 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 >> --- >> Makefile | 6 ++++-- >> udev-md-clustered-confirm-device.rules | 20 ++++++++++++++++++++ >> 2 files changed, 24 insertions(+), 2 deletions(-) >> create mode 100644 udev-md-clustered-confirm-device.rules >> >> 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..08ac74a >> --- /dev/null >> +++ b/udev-md-clustered-confirm-device.rules >> @@ -0,0 +1,20 @@ >> +# 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" > Move these here is good. > > >> + >> +# Based on the received UUID, node confirms the device if >> +# it is found by blkid, otherwise the node reports it is >> +# missing. >> +ACTION=="change", ENV{EVENT}=="ADD_DEVICE", ENV{DEVICE_UUID}=="?*", ENV{RAID_DISK}=="?*", \ > leaving them here as well is careless. Maybe move the tests on > DEVICE_UUID and RAID_DISK up to the "goto" section too. Ok, I will move them above. ENV{DEVICE_UUID}!="?*", GOTO="clustermd_end" ENV{RAID_DISK}!="?*", GOTO="clustermd_end" >> +PROGRAM="BINDIR/blkid -o device -t UUID_SUB=$env{DEVICE_UUID}", ENV{device} = "$result" > I don't think using a generic environment name like "device" is a good > idea. > This will get included in the udev database. Hmm, yes, I can see it by run "udevadm info -e", not good ... > At least include "md" or "mdadm" in the name so people know what it > means. > In my example I put a "." at the start. This cause the name to be > excluded from the udev database. Thanks for detailed explanation, I didn't know that. Best Regards, Guoqing