# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
-# stop everything which is not busy
-for i in /dev/md* /dev/md/*; do
- [ -b $i ] || continue
+type getarg >/dev/null 2>&1 || . /lib/dracut-lib.sh
- mddetail=$(udevadm info --query=property --name=$i)
- case "$mddetail" in
- *MD_LEVEL=container*)
- ;;
- *DEVTYPE=partition*)
- ;;
- *)
- mdadm --stop $i >/dev/null 2>&1
- ;;
- esac
+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
+ mdadm -S "$md" >/dev/null 2>&1
done
+
+for md in $containers; do
+ mdadm -S "$md" >/dev/null 2>&1
+done
+
+unset containers udevinfo
done
unset udevinfo
-ln -s $(command -v mdraid-cleanup) $hookdir/pre-pivot/30-mdraid-cleanup.sh 2>/dev/null
ln -s $(command -v mdraid-cleanup) $hookdir/pre-pivot/31-mdraid-cleanup.sh 2>/dev/null
udevadm control --start-exec-queue