3 # geninitrd mod: dmraid
5 # if we should init dmraid at boot
8 if [ -x /sbin/dmraid-initrd ]; then
14 # return true if dmraid is set on $devpath
15 # @param string $devpath device node to be examined
21 if ! is_yes "$USE_DMRAID"; then
25 if ! is_yes "$(echo "$devpath" | awk '/^\/dev\/mapper\/(sil|hpt37x|hpt45x|isw|lsi|nvidia|pdc|sil|via|dos)_/ { print "yes"; }')"; then
30 # find dmraid modules for $devpath
31 # @param $devpath device to be examined
32 # @return false if $devpath is not on dmraid
34 find_modules_dmraid() {
37 # get blockdev itself (without partition)
38 # /dev/mapper/sil_ahbgadcbchfc3 -> /dev/mapper/sil_ahbgadcbchfc
39 local blockdev=${devpath%%[0-9]*}
40 local raidname=${blockdev#/dev/mapper/}
43 local dev phydevs=$(dmraid -r -cdevpath,raidname | awk -F, -vv="$raidname" '{if ($2 == v) print $1}')
44 for dev in $phydevs; do
45 find_modules_for_devpath $dev
46 lvm_ignore_devices="$lvm_ignore_devices $dev"
50 if [ $found = 0 ]; then
54 findmodule "dm-mirror"
59 # generate initrd fragment for dmraid
62 if [ ! -x /sbin/dmraid-initrd ]; then
63 die "/sbin/dmraid-initrd is missing!"
67 inst_exec /sbin/dmraid-initrd /sbin/dmraid
73 # 2 secs was enough for my system to initialize.
74 # XXX: shouldn't just call 'udevadm settle' ?
76 : 'Activating Device-Mapper RAID(s)'