File mkinitrd-boot.sh of Package mdadm

#!/bin/bash
#%stage: softraid
#%programs: /sbin/mdadm
#%modules: raid0 raid1 raid456
#%if: -n "$need_mdadm"
#
##### MD (Software-)Raid
##
## This activates and waits for an MD software raid.
##
## Command line parameters
## -----------------------
##
## need_mdadm=1		use MD raid
## md_uuid		the uuid of the raid to activate
## 

# load the necessary module before we initialize the raid system
load_modules

[ "$mduuid" ] && md_uuid="$mduuid"

md_major=$(sed -ne 's/\s*\([0-9]\+\)\s*md$/\1/p' /proc/devices)
if [ -n "$md_major" -a "$md_major" = "$maj" ]; then
    md_minor="$min"
    md_dev="/dev/md$md_minor"
fi

# Always start md devices read/only. They will get set to rw as soon
# as the first write occurs. This way we can guarantee that no
# restore occurs before resume.
if [ -f /sys/module/md_mod/parameters/start_ro ]; then
    echo 1 > /sys/module/md_mod/parameters/start_ro
fi

if [ -n "$need_mdadm" ]; then
	
	if [ -f /etc/mdadm.conf ] ; then
	    mdconf="-Ac /etc/mdadm.conf"
	    [ -z "$md_dev" ] && md_dev="--scan"
	fi
	
	if [ -n "$md_uuid" ] ; then
	    mdarg="--uuid=$md_uuid"
	elif [ -n "$md_uuid" ] ; then
	    mdarg="$mdarg --uuid=$md_uuid"
	fi
	if [ -n "$md_minor" ] ; then
	    mdarg="$mdarg --super-minor=$md_minor"
	    md_dev="/dev/md$md_minor"
	elif [ -z "$md_minor" -a -n "$md_minor" ] ; then
	    mdarg="$mdarg --super-minor=$md_minor"
	fi
	
	case $resumedev in
	    /dev/md*)
	        echo 1 > /sys/module/md_mod/parameters/start_ro
	        resume_minor="${resumedev#/dev/md}"
	        mdadm -Ac partitions -m $resume_minor --auto=md $resumedev
	        ;;
	esac
	
	if [ "$md_dev" ] ; then
	    /sbin/mdadm $mdconf --auto=md $md_dev || /sbin/mdadm -Ac partitions $mdarg --auto=md $md_dev
	fi
	wait_for_events
fi

openSUSE Build Service is sponsored by