--- /dev/null
+#!/bin/sh
+# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
+# ex: ts=8 sw=4 sts=4 et filetype=sh
+
+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=env --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
inst "$moddir/mdraid_start.sh" /sbin/mdraid_start
inst "$moddir/mdadm_auto.sh" /sbin/mdadm_auto
inst_hook pre-trigger 30 "$moddir/parse-md.sh"
+ inst_hook pre-mount 10 "$moddir/mdraid-waitclean.sh"
inst "$moddir/mdraid-cleanup.sh" /sbin/mdraid-cleanup
inst_hook shutdown 30 "$moddir/md-shutdown.sh"
}