From 587b3497c149780f8c4e680d19a880418c5cc8bb Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Mon, 7 Sep 2009 14:11:18 +0200
Subject: [PATCH 09/12] mdraid_start.sh: fixed raid activation
---
modules.d/90mdraid/65-md-incremental-imsm.rules | 6 ++++++
modules.d/90mdraid/install | 3 ++-
modules.d/90mdraid/mdcontainer_start.sh | 9 +++++++++
modules.d/90mdraid/mdraid_start.sh | 18 ++----------------
modules.d/95debug/install | 2 +-
5 files changed, 20 insertions(+), 18 deletions(-)
create mode 100755 modules.d/90mdraid/mdcontainer_start.sh
diff --git a/modules.d/90mdraid/65-md-incremental-imsm.rules b/modules.d/90mdraid/65-md-incremental-imsm.rules
index 8385fb4..5104fc5 100644
--- a/modules.d/90mdraid/65-md-incremental-imsm.rules
+++ b/modules.d/90mdraid/65-md-incremental-imsm.rules
@@ -23,3 +23,9 @@ 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'"
LABEL="md_inc_end"
+
+ACTION=="add|change", \
+ ENV{DEVTYPE}!="partition", \
+ ENV{MD_LEVEL}=="container", \
+ TEST!="/tmp/.mdcontainer_start-%k", \
+ RUN+="/bin/sh -c '>/tmp/.mdcontainer_start-%k; initqueue /sbin/mdcontainer_start $env{DEVNAME}'"
diff --git a/modules.d/90mdraid/install b/modules.d/90mdraid/install
index 71c313b..c2de3bb 100755
--- a/modules.d/90mdraid/install
+++ b/modules.d/90mdraid/install
@@ -1,6 +1,6 @@
#!/bin/bash
-dracut_install mdadm partx grep
+dracut_install mdadm partx
# XXX: mdmon really needs to run as non-root?
@@ -32,6 +32,7 @@ if [ -x /sbin/mdmon ] ; then
fi
inst "$moddir/mdraid_start.sh" /sbin/mdraid_start
+inst "$moddir/mdcontainer_start.sh" /sbin/mdcontainer_start
inst_hook pre-trigger 30 "$moddir/parse-md.sh"
inst_hook pre-pivot 30 "$moddir/mdraid-cleanup.sh"
inst_hook pre-pivot 31 "$moddir/mdraid-cleanup.sh"
diff --git a/modules.d/90mdraid/mdcontainer_start.sh b/modules.d/90mdraid/mdcontainer_start.sh
new file mode 100755
index 0000000..403b62b
--- /dev/null
+++ b/modules.d/90mdraid/mdcontainer_start.sh
@@ -0,0 +1,9 @@
+#!/bin/sh
+. /lib/dracut-lib.sh
+
+if $UDEV_QUEUE_EMPTY >/dev/null 2>&1; then
+ # run mdadm if udev has settled
+ md=$1
+ # and activate any containers
+ mdadm -IR $md 2>&1 | vinfo
+fi
diff --git a/modules.d/90mdraid/mdraid_start.sh b/modules.d/90mdraid/mdraid_start.sh
index a6868bd..55e7d9c 100755
--- a/modules.d/90mdraid/mdraid_start.sh
+++ b/modules.d/90mdraid/mdraid_start.sh
@@ -4,20 +4,6 @@ if $UDEV_QUEUE_EMPTY >/dev/null 2>&1; then
[ -h "$job" ] && rm -f "$job"
# run mdadm if udev has settled
info "Assembling MD RAID arrays"
-
- # and activate any containers
- for md in /dev/md?*; do
- case $md in
- /dev/md*p*) ;;
- *)
- if mdadm --query --test --detail $md 2>&1|grep -q 'does not appear to be active'; then
- info "Starting MD RAID array $md"
- mdadm -R $md 2>&1 | vinfo
- if mdadm --query --test --detail $md 2>&1|grep -q 'does not appear to be active'; then
- mdadm -IR $md 2>&1 | vinfo
- fi
- udevsettle
- fi
- esac
- done
+ mdadm -IRs 2>&1 | vinfo
+ udevsettle
fi
diff --git a/modules.d/95debug/install b/modules.d/95debug/install
index 1597187..1c7afaf 100755
--- a/modules.d/95debug/install
+++ b/modules.d/95debug/install
@@ -1,3 +1,3 @@
#!/bin/bash
dracut_install -o ps grep more cat rm strace free showmount
-dracut_install -o ping netstat rpcinfo
+dracut_install -o ping netstat rpcinfo vi
--
1.6.2.5