]> CyberLeo.Net >> Repos - FreeBSD/releng/10.0.git/blob - etc/rc.d/dumpon
- Copy stable/10 (r259064) to releng/10.0 as part of the
[FreeBSD/releng/10.0.git] / etc / rc.d / dumpon
1 #!/bin/sh
2 #
3 # $FreeBSD$
4 #
5
6 # PROVIDE: dumpon
7 # REQUIRE: zvol
8 # BEFORE: disks
9 # KEYWORD: nojail
10
11 . /etc/rc.subr
12
13 name="dumpon"
14 start_cmd="dumpon_start"
15 stop_cmd="dumpon_stop"
16
17 dumpon_try()
18 {
19         if /sbin/dumpon "${1}" ; then
20                 # Make a symlink in devfs for savecore
21                 ln -fs "${1}" /dev/dumpdev
22                 return 0
23         fi
24         warn "unable to specify $1 as a dump device"
25         return 1
26 }
27
28 dumpon_start()
29 {
30         # Enable dumpdev so that savecore can see it. Enable it
31         # early so a crash early in the boot process can be caught.
32         #
33         case ${dumpdev} in
34         [Nn][Oo] | '')
35                 ;;
36         [Aa][Uu][Tt][Oo])
37                 dev=$(/bin/kenv -q dumpdev)
38                 if [ -n "${dev}" ] ; then
39                         dumpon_try "${dev}"
40                         return $?
41                 fi
42                 while read dev mp type more ; do
43                         [ "${type}" = "swap" ] || continue
44                         [ -c "${dev}" ] || continue
45                         dumpon_try "${dev}" 2>/dev/null && return 0
46                 done </etc/fstab
47                 echo "No suitable dump device was found." 1>&2
48                 return 1
49                 ;;
50         *)
51                 dumpon_try "${dumpdev}"
52                 ;;
53         esac
54 }
55
56 dumpon_stop()
57 {
58         case ${dumpdev} in
59         [Nn][Oo] | '')
60                 ;;
61         *)
62                 rm -f /dev/dumpdev
63                 /sbin/dumpon -v off
64                 ;;
65         esac
66 }
67
68 load_rc_config $name
69 run_rc_command "$1"