1
1
#! /bin/bash
2
2
3
- create_udev_rule () {
3
+ allow_device () {
4
4
local ccw=$1
5
- local _drv _cu_type _dev_type
6
- local _rule=" /etc/udev/rules.d/51-dasd-${ccw} .rules"
7
5
8
6
if [ -x /sbin/cio_ignore ] && cio_ignore -i " $ccw " > /dev/null; then
9
7
cio_ignore -r " $ccw "
10
8
fi
11
-
12
- if [ -e /sys/bus/ccw/devices/" ${ccw} " ]; then
13
- read -r _cu_type < /sys/bus/ccw/devices/" ${ccw} " /cutype
14
- read -r _dev_type < /sys/bus/ccw/devices/" ${ccw} " /devtype
15
- fi
16
-
17
- case " $_cu_type " in
18
- 3990/* | 2105/* | 2107/* | 1750/* | 9343/* )
19
- _drv=dasd-eckd
20
- ;;
21
- 6310/* )
22
- _drv=dasd-fba
23
- ;;
24
- 3880/* )
25
- case " $_dev_type " in
26
- 3380/* )
27
- _drv=dasd_eckd
28
- ;;
29
- 3370/* )
30
- _drv=dasd-fba
31
- ;;
32
- esac
33
- ;;
34
- esac
35
- [ -z " ${_drv} " ] && return 0
36
-
37
- [ -e " ${_rule} " ] && return 0
38
-
39
- cat > " $_rule " << EOF
40
- ACTION=="add", SUBSYSTEM=="ccw", KERNEL=="$ccw ", IMPORT{program}="collect $ccw %k ${ccw} $_drv "
41
- ACTION=="add", SUBSYSTEM=="drivers", KERNEL=="$_drv ", IMPORT{program}="collect $ccw %k ${ccw} $_drv "
42
- ACTION=="add", ENV{COLLECT_$ccw }=="0", ATTR{[ccw/$ccw ]online}="1"
43
- EOF
44
9
}
45
10
46
11
if [[ -f /sys/firmware/ipl/ipl_type ]] && [[ $( < /sys/firmware/ipl/ipl_type) == " ccw" ]]; then
47
- create_udev_rule " $( < /sys/firmware/ipl/device) "
12
+ allow_device " $( < /sys/firmware/ipl/device) "
48
13
fi
49
14
50
15
for dasd_arg in $( getargs root=) $( getargs resume=) ; do
51
16
[[ $dasd_arg =~ /dev/disk/by-path/ccw-* ]] || continue
52
17
53
18
ccw_dev=" ${dasd_arg##*/ ccw-} "
54
- create_udev_rule " ${ccw_dev%% -* } "
19
+ allow_device " ${ccw_dev%% -* } "
55
20
done
56
21
57
22
for dasd_arg in $( getargs rd.dasd=) ; do
@@ -66,12 +31,12 @@ for dasd_arg in $(getargs rd.dasd=); do
66
31
prefix=${start% .* }
67
32
start=${start##* .}
68
33
for rdev in $( seq $(( 16 #$start )) $(( 16 #$end )) ) ; do
69
- create_udev_rule " $( printf " %s.%04x" " $prefix " " $rdev " ) "
34
+ allow_device " $( printf " %s.%04x" " $prefix " " $rdev " ) "
70
35
done
71
36
;;
72
37
* )
73
38
IFS=" ." read -r sid ssid chan _ <<< " ${dev%(ro)}"
74
- create_udev_rule " $( printf " %01x.%01x.%04x" $(( 16 #$sid )) $(( 16 #$ssid )) $(( 16 #$chan )) ) "
39
+ allow_device " $( printf " %01x.%01x.%04x" $(( 16 #$sid )) $(( 16 #$ssid )) $(( 16 #$chan )) ) "
75
40
;;
76
41
esac
77
42
done
0 commit comments