]> git.pld-linux.org Git - projects/geninitrd.git/blame - mod-dmraid.sh
- udev modularized
[projects/geninitrd.git] / mod-dmraid.sh
CommitLineData
36523626
ER
1#!/bin/sh
2#
3# geninitrd mod: dmraid
4
5# if we should init dmraid at boot
6have_dmraid=no
7
684d5d2a
ER
8dmraid=$(find_tool $initrd_dir/dmraid /sbin/dmraid-initrd)
9if [ -x /sbin/dmraid -a -x "$dmraid" ]; then
36523626
ER
10 USE_DMRAID=yes
11else
12 USE_DMRAID=no
13fi
14
fb0e4a4c
ER
15if [ "$kernel_version" -lt "002006" ]; then
16 USE_DMRAID=no
17fi
18
36523626
ER
19# return true if dmraid is set on $devpath
20# @param string $devpath device node to be examined
21# @access public
22is_dmraid() {
23 local devpath="$1"
24
25 # dmraid disabled
26 if ! is_yes "$USE_DMRAID"; then
27 return 1
28 fi
29
30 if ! is_yes "$(echo "$devpath" | awk '/^\/dev\/mapper\/(sil|hpt37x|hpt45x|isw|lsi|nvidia|pdc|sil|via|dos)_/ { print "yes"; }')"; then
31 return
32 fi
33}
34
35# find dmraid modules for $devpath
36# @param $devpath device to be examined
37# @return false if $devpath is not on dmraid
38# @access public
39find_modules_dmraid() {
40 local devpath="$1"
41
42 # get blockdev itself (without partition)
43 # /dev/mapper/sil_ahbgadcbchfc3 -> /dev/mapper/sil_ahbgadcbchfc
44 local blockdev=${devpath%%[0-9]*}
45 local raidname=${blockdev#/dev/mapper/}
46 local found=0
47
48 local dev phydevs=$(dmraid -r -cdevpath,raidname | awk -F, -vv="$raidname" '{if ($2 == v) print $1}')
49 for dev in $phydevs; do
50 find_modules_for_devpath $dev
51 lvm_ignore_devices="$lvm_ignore_devices $dev"
52 found=1
53 done
54
55 if [ $found = 0 ]; then
56 return 1
57 fi
58
b02a6b13 59 find_module "dm-mirror"
36523626
ER
60 have_dmraid=yes
61 return 0
62}
63
64# generate initrd fragment for dmraid
65# @access public
66initrd_gen_dmraid() {
36523626 67 inst_d /sbin
684d5d2a 68 inst_exec $dmraid /sbin/dmraid
36523626
ER
69
70 mount_dev
71 mount_sys
72 initrd_gen_devices
73 add_linuxrc <<-EOF
74 # 2 secs was enough for my system to initialize.
75 # XXX: shouldn't just call 'udevadm settle' ?
76 usleep 2000000
77 : 'Activating Device-Mapper RAID(s)'
78 /sbin/dmraid -ay -i
79
80 debugshell
81 EOF
82}
This page took 0.03151 seconds and 4 git commands to generate.