~ubuntu-branches/ubuntu/saucy/s390-tools/saucy

« back to all changes in this revision

Viewing changes to etc/init.d/dumpconf

  • Committer: Bazaar Package Importer
  • Author(s): Bastian Blank
  • Date: 2008-07-15 23:55:41 UTC
  • mfrom: (1.1.3 upstream)
  • Revision ID: james.westby@ubuntu.com-20080715235541-r79vu6eqh4qim413
Tags: 1.6.2-1
* New upstream version.
* Install udev rules.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#!/bin/sh
 
2
### BEGIN INIT INFO
 
3
# Provides: dumpconf
 
4
# Required-Start: $local_fs
 
5
# Required-Stop: $local_fs
 
6
# Default-Start:  1 2 3 4 5
 
7
# Default-Stop: 0 6
 
8
# Short-Description: Configure s390 dump feature
 
9
# Description: Configures the s390 dump feature. It uses the configuration file
 
10
#              /etc/sysconfig/dumpconf
 
11
### END INIT INFO
 
12
 
 
13
# chkconfig: 12345 01 99
 
14
 
 
15
DUMP_CONFIG_FILE=/etc/sysconfig/dumpconf
 
16
 
 
17
RETVAL=0
 
18
 
 
19
check_environment()
 
20
{
 
21
        if [ ! -f $DUMP_CONFIG_FILE ]; then
 
22
                echo "no config file found: $DUMP_CONFIG_FILE"
 
23
                exit 1
 
24
        fi
 
25
 
 
26
        if [ "$(cat /proc/filesystems|grep sysfs)" = "" ]; then
 
27
                echo "no sysfs found" >&2
 
28
                exit 1 
 
29
        fi
 
30
 
 
31
        SYSFSDIR=$(cat /proc/mounts|awk '$3=="sysfs"{print $2; exit}')
 
32
        if [ "$SYSFSDIR" = "" ]; then
 
33
                echo "sysfs not mounted" >&2
 
34
                exit 1
 
35
        fi
 
36
 
 
37
        DUMP_CONFIG_DIR=/$SYSFSDIR/firmware/dump
 
38
        ON_PANIC_CONFIG_FILE=/$SYSFSDIR/firmware/shutdown_act\
 
39
ions/on_panic
 
40
 
 
41
        if [ ! -d $DUMP_CONFIG_DIR ]; then
 
42
                echo "kernel has no dump on panic support"
 
43
                exit 0
 
44
        fi
 
45
        . $DUMP_CONFIG_FILE
 
46
}
 
47
 
 
48
printhelp()
 
49
{
 
50
    cat <<EOF
 
51
Usage: dumpconf [OPTIONS]
 
52
 
 
53
This script can be used to configure the dump device which is used by the
 
54
Linux kernel in case of a kernel panic.
 
55
 
 
56
It uses the configuration file /etc/sysconfig/dumpconf as input.
 
57
 
 
58
Options:
 
59
 
 
60
        -h, --help       print this help
 
61
        -v, --version    print version information
 
62
        start            enable configuration defined in /etc/sysconfig/dumpconf
 
63
        stop             disable dump on panic
 
64
        status           show current dump on panic configuration
 
65
EOF
 
66
}
 
67
 
 
68
printversion()
 
69
{
 
70
    cat <<EOF
 
71
dumpconf: zSeries dump configuration script version 1.0.
 
72
Copyright IBM Corp. 2006.
 
73
EOF
 
74
}
 
75
 
 
76
print_invalid_option()
 
77
{
 
78
    cat <<EOF
 
79
dumpconf: invalid option -- $1
 
80
Try 'dumpconf --help' for more information.
 
81
EOF
 
82
}
 
83
 
 
84
sanity_check() {
 
85
        DUMP_TYPE_CHECK=$(cat $DUMP_CONFIG_DIR/dump_type)
 
86
        ON_PANIC_CHECK=$(cat $ON_PANIC_CONFIG_FILE)
 
87
        if [ "$ON_PANIC_CHECK" == "dump" -a "$DUMP_TYPE_CHECK" == "none" ]; then
 
88
                echo "WARNING: on_panic is set to dump, but no dump configuration exists." >&2
 
89
                echo "         Are you sure, that this is really what you want?" >&2
 
90
        fi
 
91
}
 
92
 
 
93
# $1: dump device bus id (e.g. 0.0.4711)
 
94
verify_ccw_dump_device()
 
95
{
 
96
        line=$(lsdasd $1)
 
97
        if [ "$line" == "" ]; then
 
98
                echo "WARNING: device $1 not found!"
 
99
                return 1
 
100
        fi
 
101
        found=false
 
102
        for i in $line
 
103
        do
 
104
                if [ $found == true ]; then
 
105
                        break
 
106
                fi
 
107
                if [ "$i" == "is" ]; then
 
108
                        found=true
 
109
                fi
 
110
        done
 
111
        zgetdump -d /dev/$i > /dev/null 2>&1
 
112
        if [ $? == 0 ]; then
 
113
                return 0
 
114
        else
 
115
                echo "WARNING: $1 is no valid dump device!"
 
116
                return 1
 
117
        fi
 
118
}
 
119
 
 
120
start()
 
121
{
 
122
        # setup dump config
 
123
 
 
124
        ERRMSG="Dump configuration failed!"
 
125
        if [ "$DUMP_TYPE" == "" ]; then
 
126
                echo none > $DUMP_CONFIG_DIR/dump_type || RETVAL=1
 
127
        elif [ "$DUMP_TYPE" == "none" ]; then
 
128
                echo none > $DUMP_CONFIG_DIR/dump_type || RETVAL=1
 
129
        elif [ ! -d $DUMP_CONFIG_DIR/$DUMP_TYPE ]; then
 
130
                ERRMSG="dumptype '$DUMP_TYPE' not supported on this machine!"
 
131
                RETVAL=1
 
132
        elif [ "$DUMP_TYPE" == "ccw" ]; then
 
133
                echo $DEVICE > $DUMP_CONFIG_DIR/ccw/device || RETVAL=1
 
134
                echo ccw > $DUMP_CONFIG_DIR/dump_type || RETVAL=1
 
135
        elif [ "$DUMP_TYPE" == "fcp" ]; then
 
136
                echo $DEVICE > $DUMP_CONFIG_DIR/fcp/device || RETVAL=1
 
137
                echo $WWPN > $DUMP_CONFIG_DIR/fcp/wwpn || RETVAL=1
 
138
                echo $LUN > $DUMP_CONFIG_DIR/fcp/lun || RETVAL=1
 
139
                echo $BOOTPROG > $DUMP_CONFIG_DIR/fcp/bootprog || RETVAL=1
 
140
                echo $BR_LBA > $DUMP_CONFIG_DIR/fcp/br_lba || RETVAL=1
 
141
                echo fcp > $DUMP_CONFIG_DIR/dump_type || RETVAL=1
 
142
        fi
 
143
 
 
144
        # check for errors
 
145
 
 
146
        if [ $RETVAL -eq 1 ]; then
 
147
                echo none > $DUMP_CONFIG_DIR/dump_type
 
148
                echo stop > $ON_PANIC_CONFIG_FILE
 
149
                echo "ERROR: $ERRMSG Check $DUMP_CONFIG_FILE!" >&2
 
150
                return $RETVAL
 
151
        fi
 
152
 
 
153
        # print message
 
154
 
 
155
        CONF_DUMP_TYPE=$(cat $DUMP_CONFIG_DIR/dump_type)
 
156
 
 
157
        if [ "$CONF_DUMP_TYPE" == "none" ]; then
 
158
                echo -n "No dump device configured. "
 
159
        else
 
160
                echo -n "$CONF_DUMP_TYPE dump device configured. "
 
161
        fi
 
162
 
 
163
        # setup on_panic
 
164
 
 
165
        if [ "$ON_PANIC" == "" ]; then
 
166
                ON_PANIC="stop"
 
167
        fi 
 
168
        echo $ON_PANIC > $ON_PANIC_CONFIG_FILE || RETVAL=1
 
169
        if [ $RETVAL -eq 1 ]; then
 
170
                echo stop > $ON_PANIC_CONFIG_FILE
 
171
                echo
 
172
                echo "ERROR: Invalid setting for on_panic '$ON_PANIC'! Please check $DUMP_CONFIG_FILE!" >&2
 
173
                return $RETVAL
 
174
        fi
 
175
 
 
176
        echo "\"$ON_PANIC\" on panic configured."
 
177
 
 
178
        sanity_check
 
179
 
 
180
        return $RETVAL
 
181
}
 
182
 
 
183
stop()
 
184
{
 
185
        echo none > $DUMP_CONFIG_DIR/dump_type || RETVAL=1
 
186
        echo stop > $ON_PANIC_CONFIG_FILE || RETVAL=1
 
187
        if [ $RETVAL -eq 0 ]; then
 
188
                echo "Dump on panic is disabled now"
 
189
        else
 
190
                echo "Disabling dump on panic failed" >&2
 
191
        fi
 
192
        return $RETVAL
 
193
}
 
194
 
 
195
status()
 
196
{
 
197
        CONF_DUMP_TYPE=$(cat $DUMP_CONFIG_DIR/dump_type) || RETVAL=1
 
198
        if [ "$CONF_DUMP_TYPE" == "none" ]; then
 
199
                echo "type....: no dump device configured"
 
200
        elif [ "$CONF_DUMP_TYPE" == "ccw" ]; then
 
201
                echo "type....: $(cat $DUMP_CONFIG_DIR/dump_type)" || RETVAL=1
 
202
                device=$(cat $DUMP_CONFIG_DIR/ccw/device)
 
203
                echo "device..: $device" || RETVAL=1
 
204
        elif [ "$CONF_DUMP_TYPE" == "fcp" ]; then
 
205
                echo "type....: $(cat $DUMP_CONFIG_DIR/dump_type)" || RETVAL=1
 
206
                echo "device..: $(cat $DUMP_CONFIG_DIR/fcp/device)" || RETVAL=1
 
207
                echo "wwpn....: $(cat $DUMP_CONFIG_DIR/fcp/wwpn)" || RETVAL=1
 
208
                echo "lun.....: $(cat $DUMP_CONFIG_DIR/fcp/lun)" || RETVAL=1
 
209
                echo "bootprog: $(cat $DUMP_CONFIG_DIR/fcp/bootprog)" || RETVAL=1
 
210
                echo "br_lba..: $(cat $DUMP_CONFIG_DIR/fcp/br_lba)" || RETVAL=1
 
211
        else
 
212
                echo "ERROR: Unknown dump device type '$TYPE'!" >&2
 
213
                echo "       Please check if you have the latest dumpconf package!" >&2
 
214
        fi
 
215
 
 
216
        ON_PANIC=$(cat $ON_PANIC_CONFIG_FILE) || RETVAL=1
 
217
        echo "on_panic: $ON_PANIC"
 
218
        if [ "$CONF_DUMP_TYPE" == "ccw" ]; then
 
219
                verify_ccw_dump_device $device
 
220
        fi
 
221
        sanity_check
 
222
}
 
223
 
 
224
if [ "$1" = "-h" ] || [ "$1" = "--help" ]; then
 
225
        printhelp
 
226
        exit 0
 
227
elif [ "$1" = "-v" ] || [ "$1" = "--version" ]; then
 
228
        printversion
 
229
        exit 0
 
230
fi
 
231
 
 
232
check_environment
 
233
 
 
234
# See how we were called.
 
235
case "$1" in
 
236
        start|restart|reload|force-reload|try-restart)
 
237
                start
 
238
                ;;
 
239
        stop)
 
240
                stop
 
241
                ;;
 
242
        status)
 
243
                status
 
244
                ;;
 
245
        *)
 
246
                print_invalid_option $1
 
247
                RETVAL=1
 
248
esac
 
249
 
 
250
exit $RETVAL