From: Harald Hoyer Date: Thu, 17 Nov 2011 09:14:23 +0000 (+0100) Subject: 90mdraid: wait for md devices to become clean X-Git-Tag: 014~10 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=a1abd64affb5df544e3a6afdf8e928b7700641ac;p=thirdparty%2Fdracut.git 90mdraid: wait for md devices to become clean After assembling all devices, just wait for the raid devices to become clean, before booting further. --- diff --git a/modules.d/90mdraid/mdraid-waitclean.sh b/modules.d/90mdraid/mdraid-waitclean.sh new file mode 100755 index 000000000..c062fc740 --- /dev/null +++ b/modules.d/90mdraid/mdraid-waitclean.sh @@ -0,0 +1,25 @@ +#!/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 diff --git a/modules.d/90mdraid/module-setup.sh b/modules.d/90mdraid/module-setup.sh index fe793bb34..029d667b1 100755 --- a/modules.d/90mdraid/module-setup.sh +++ b/modules.d/90mdraid/module-setup.sh @@ -83,6 +83,7 @@ install() { 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" }