]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - etc/rc.d/addswap
Clean up swapfile memory disk on shutdown
[FreeBSD/FreeBSD.git] / etc / rc.d / addswap
1 #!/bin/sh
2 #
3 # Add additional swap files
4 #
5 # $FreeBSD$
6 #
7
8 # PROVIDE: addswap
9 # REQUIRE: FILESYSTEMS kld
10 # BEFORE:  netif
11 # KEYWORD: nojail shutdown
12
13 . /etc/rc.subr
14
15 name="addswap"
16 start_cmd="addswap_start"
17 stop_cmd="addswap_stop"
18
19 addswap_start()
20 {
21         case ${swapfile} in
22         [Nn][Oo] | '')
23                 ;;
24         *)
25                 if [ -w "${swapfile}" ]; then
26                         check_startmsgs && echo "Adding ${swapfile} as additional swap"
27
28                         if [ -n "${swapfile_mdunit}" ]; then
29                                 mdev="/dev/md${swapfile_mdunit#md}"
30                                 mdconfig -a -t vnode -f "${swapfile}" -u ${swapfile_mdunit}
31                         else
32                                 mdev="/dev/`mdconfig -a -t vnode -f "${swapfile}"`"
33                         fi
34
35                         if [ $? -eq 0 ]; then
36                                 swapon ${mdev}
37                         else
38                                 echo "error creating swapfile device"
39                         fi
40                 fi
41                 ;;
42         esac
43 }
44
45 addswap_stop()
46 {
47         case ${swapfile} in
48         [Nn][Oo] | '')
49                 ;;
50         *)
51                 if [ -n "${swapfile_mdunit}" ]; then
52                         mdev="/dev/md${swapfile_mdunit#md}"
53                 else
54                         mdev="/dev/`mdconfig -lv | grep "${swapfile}" | cut -f1`"
55                         swapfile_mdunit=${mdev#md}
56                 fi
57                 if [ -n "${swapfile_mdunit}" ]; then
58                         swapctl -l | grep -q ${mdev}
59                         if [ $? -eq 0 ]; then
60                                 echo "Dismounting swapfile ${swapfile}"
61                                 swapoff ${mdev} && mdconfig -d -u ${swapfile_mdunit}
62                         fi
63                 fi
64                 ;;
65         esac
66 }
67
68 load_rc_config $name
69 run_rc_command "$1"