summaryrefslogtreecommitdiffstats
path: root/modules.d/90mdraid/mdraid-waitclean.sh
diff options
context:
space:
mode:
Diffstat (limited to '')
-rwxr-xr-xmodules.d/90mdraid/mdraid-waitclean.sh24
1 files changed, 24 insertions, 0 deletions
diff --git a/modules.d/90mdraid/mdraid-waitclean.sh b/modules.d/90mdraid/mdraid-waitclean.sh
new file mode 100755
index 0000000..9317962
--- /dev/null
+++ b/modules.d/90mdraid/mdraid-waitclean.sh
@@ -0,0 +1,24 @@
+#!/bin/sh
+
+if getargbool 0 rd.md.waitclean; then
+ type getarg > /dev/null 2>&1 || . /lib/dracut-lib.sh
+ containers=""
+ for md in /dev/md[0-9_]*; do
+ [ -b "$md" ] || continue
+ udevinfo="$(udevadm info --query=property --name="$md")"
+ strstr "$udevinfo" "DEVTYPE=partition" && continue
+ if strstr "$udevinfo" "MD_LEVEL=container"; then
+ containers="$containers $md"
+ continue
+ fi
+ info "Waiting for $md to become clean"
+ mdadm -W "$md" > /dev/null 2>&1
+ done
+
+ for md in $containers; do
+ info "Waiting for $md to become clean"
+ mdadm -W "$md" > /dev/null 2>&1
+ done
+
+ unset containers udevinfo
+fi