2 RCSID='$Revision$ $Date$'
4 # geninitrd mod: dmraid
5 USE_DMRAID=${USE_DMRAID:-yes}
7 # if we should init dmraid at boot
10 # setup geninitrd module
13 dmraid=$(find_tool $initrd_dir/dmraid /sbin/dmraid-initrd)
14 if [ ! -x /sbin/dmraid ] || [ ! -x "$dmraid" ]; then
18 if [ "$kernel_version" -lt "002006" ]; then
23 # return true if dmraid is set on $devpath
24 # @param string $devpath device node to be examined
30 if ! is_yes "$USE_DMRAID"; then
34 if ! is_yes "$(echo "$devpath" | awk '/^\/dev\/mapper\/(sil|hpt37x|hpt45x|isw|lsi|nvidia|pdc|sil|via|dos)_/ { print "yes"; }')"; then
39 # find dmraid modules for $devpath
40 # @param $devpath device to be examined
41 # @return false if $devpath is not on dmraid
43 find_modules_dmraid() {
46 # get blockdev itself (without partition)
47 # /dev/mapper/sil_ahbgadcbchfc3 -> /dev/mapper/sil_ahbgadcbchfc
48 local blockdev=${devpath%%[0-9]*}
49 local raidname=${blockdev#/dev/mapper/}
52 local dev phydevs=$(dmraid -r -cdevpath,raidname | awk -F, -vv="$raidname" '{if ($2 == v) print $1}')
53 for dev in $phydevs; do
54 find_modules_for_devpath $dev
55 lvm_ignore_devices="$lvm_ignore_devices $dev"
59 if [ $found = 0 ]; then
63 find_module "dm-mirror"
68 # generate initrd fragment for dmraid
71 if ! is_yes "$have_dmraid"; then
76 inst_exec $dmraid /sbin/dmraid
82 # 2 secs was enough for my system to initialize.
83 # XXX: shouldn't just call 'udevadm settle' ?
85 : 'Activating Device-Mapper RAID(s)'