From 0de01de409fc90402ab6ddf8b317b94bc6c13ef0 Mon Sep 17 00:00:00 2001 From: Harald Hoyer Date: Fri, 17 Jul 2009 15:01:08 +0200 Subject: [PATCH] mdraid: do not handle isw_raid_member if rd_NO_MDIMSM is set in udev ENV install md-noimsm.sh if mdadm does not support imsm. --- .../90mdraid/65-md-incremental-imsm.rules | 1 + modules.d/90mdraid/65-md-incremental.rules | 23 ------------------- modules.d/90mdraid/install | 10 ++++---- modules.d/90mdraid/md-noimsm.sh | 2 ++ modules.d/90mdraid/parse-md.sh | 9 ++++++-- 5 files changed, 15 insertions(+), 30 deletions(-) delete mode 100644 modules.d/90mdraid/65-md-incremental.rules create mode 100644 modules.d/90mdraid/md-noimsm.sh diff --git a/modules.d/90mdraid/65-md-incremental-imsm.rules b/modules.d/90mdraid/65-md-incremental-imsm.rules index f6efb560..7879214c 100644 --- a/modules.d/90mdraid/65-md-incremental-imsm.rules +++ b/modules.d/90mdraid/65-md-incremental-imsm.rules @@ -5,6 +5,7 @@ ACTION!="add", GOTO="md_inc_end" SUBSYSTEM!="block", GOTO="md_inc_end" ENV{ID_FS_TYPE}!="linux_raid_member|isw_raid_member", GOTO="md_inc_end" +ENV{ID_FS_TYPE}=="isw_raid_member", ENV{rd_NO_MDIMSM}=="?*", GOTO="md_inc_end" TEST=="/tmp/.mdraid_start-%k", GOTO="md_inc_end" diff --git a/modules.d/90mdraid/65-md-incremental.rules b/modules.d/90mdraid/65-md-incremental.rules deleted file mode 100644 index 38e7654d..00000000 --- a/modules.d/90mdraid/65-md-incremental.rules +++ /dev/null @@ -1,23 +0,0 @@ -# This file causes block devices with Linux RAID (mdadm) signatures to -# automatically cause mdadm to be run. -# See udev(8) for syntax - -ACTION!="add", GOTO="md_inc_end" -SUBSYSTEM!="block", GOTO="md_inc_end" -ENV{ID_FS_TYPE}!="linux_raid_member", GOTO="md_inc_end" - -TEST=="/tmp/.mdraid_start-%k", GOTO="md_inc_end" - -IMPORT{program}="/sbin/mdadm --examine --export $tempnode" - -# UUID CHECK - -LABEL="do_md_inc" - -RUN+="/sbin/mdadm -I --no-degraded $env{DEVNAME}" - -RUN+="/bin/sh -c '>/tmp/.mdraid_start-%k; /bin/ln -s /sbin/mdraid_start /initqueue/mdraid_start.sh'" - -ATTR{partition}!="?*", RUN+="/sbin/partx -d $env{DEVNAME}" - -LABEL="md_inc_end" diff --git a/modules.d/90mdraid/install b/modules.d/90mdraid/install index 27765579..45cf3527 100755 --- a/modules.d/90mdraid/install +++ b/modules.d/90mdraid/install @@ -16,10 +16,10 @@ else inst_rules 64-md-raid.rules fi -if mdadm -Q -e imsm /dev/null &> /dev/null; then - inst_rules "$moddir/65-md-incremental-imsm.rules" -else - inst_rules "$moddir/65-md-incremental.rules" +inst_rules "$moddir/65-md-incremental-imsm.rules" + +if ! mdadm -Q -e imsm /dev/null &> /dev/null; then + inst_hook pre-trigger 30 "$moddir/md-noimsm.sh" fi @@ -34,4 +34,4 @@ if [ -x /sbin/mdmon ] ; then fi inst "$moddir/mdraid_start.sh" /sbin/mdraid_start -inst_hook cmdline 30 "$moddir/parse-md.sh" +inst_hook pre-trigger 30 "$moddir/parse-md.sh" diff --git a/modules.d/90mdraid/md-noimsm.sh b/modules.d/90mdraid/md-noimsm.sh new file mode 100644 index 00000000..7ff0b335 --- /dev/null +++ b/modules.d/90mdraid/md-noimsm.sh @@ -0,0 +1,2 @@ +info "rd_NO_MDIMSM: no MD RAID for imsm/isw raids" +udevadm control --property=rd_NO_MDIMSM=1 \ No newline at end of file diff --git a/modules.d/90mdraid/parse-md.sh b/modules.d/90mdraid/parse-md.sh index af89084d..910fe4db 100644 --- a/modules.d/90mdraid/parse-md.sh +++ b/modules.d/90mdraid/parse-md.sh @@ -1,6 +1,7 @@ -initrdargs="$initrdargs rd_MD_UUID rd_NO_MD" +initrdargs="$initrdargs rd_MD_UUID rd_NO_MD rd_NO_MDIMSM" -if $(getarg rd_NO_MD); then +if getarg rd_NO_MD; then + info "rd_NO_MD: removing MD RAID activation" rm /etc/udev/rules.d/65-md-incremental*.rules else MD_UUID=$(getargs rd_MD_UUID=) @@ -25,3 +26,7 @@ else fi fi +if getarg rd_NO_MDIMSM; then + info "rd_NO_MDIMSM: no MD RAID for imsm/isw raids" + udevadm control --property=rd_NO_MDIMSM=1 +fi \ No newline at end of file