#!/bin/sh

PREREQ="udev"

prereqs()
{
	echo "$PREREQ"
}

case $1 in
# get pre-requisites
prereqs)
	prereqs
	exit 0
	;;
esac

. /scripts/functions

unset raidlvl
gotraid=n
slumber=1800

configureduuids=$(cat /etc/mdadm/mdadm.conf)

if [ -z "$configureduuids" ]; then
	configureduuids=none
fi

[ "$quiet" != "y" ] && log_begin_msg "Starting up RAIDs. Please wait, the process might take a long time!"

# Detect raid level
while [ "$configureduuids" ] && [ ${slumber} -gt 0 ]; do
	for x in /dev/hd[a-z]* /dev/sd[a-z]*; do
		if [ ! -e ${x} ]; then
			continue
		fi
		raidlvl=$(mdadm --examine ${x} 2>/dev/null | grep "Level" | sed -e 's/.*Raid Level : \(.*\)/\1/')
		raiduuid=$(mdadm --examine ${x} 2>/dev/null | grep "UUID" | sed -e 's/.*UUID : \(.*\)/\1/')
		if [ "$raidlvl" ]; then
			configureduuids=$(echo $configureduuids | sed -e 's/'$raiduuid'//g')
			configureduuids=$(echo $configureduuids)
			modprobe -Qb ${raidlvl} 2>/dev/null
			gotraid=y
		fi
	done
	sleep 0.1
	slumber=$(( ${slumber} - 1 ))
	if [ "$configureduuids" = "none" ]; then
		configureduuids=""
	fi
done

if [ "${gotraid}" != "y" ]; then
	if [ "$quiet" != "y" ]; then
		log_end_msg 1
	fi
	exit
fi

/sbin/mdrun /dev

# for some reasons md needs to kick udev.
udevtrigger -b && udevsettle

[ "$quiet" != "y" ] && log_end_msg 0
