]> CyberLeo.Net >> Repos - FreeBSD/releng/7.2.git/blob - etc/rc.d/zfs
Create releng/7.2 from stable/7 in preparation for 7.2-RELEASE.
[FreeBSD/releng/7.2.git] / etc / rc.d / zfs
1 #!/bin/sh
2 #
3 # $FreeBSD$
4 #
5
6 # PROVIDE: zfs
7 # REQUIRE: mountcritlocal
8
9 . /etc/rc.subr
10
11 name="zfs"
12 rcvar="zfs_enable"
13 start_cmd="zfs_start"
14 stop_cmd="zfs_stop"
15 required_modules="zfs"
16
17 zfs_start_jail()
18 {
19         if [ `$SYSCTL_N security.jail.mount_allowed` -eq 1 ]; then
20                 zfs mount -a
21         fi
22 }
23
24 zfs_start_main()
25 {
26         zfs volinit
27         zfs mount -a
28         zfs share -a
29         if [ ! -r /etc/zfs/exports ]; then
30                 touch /etc/zfs/exports
31         fi
32         # Enable swap on ZVOLs with property org.freebsd:swap=on.
33         zfs list -H -o org.freebsd:swap,name -t volume | \
34         while read state name; do
35                 case "${state}" in
36                 [oO][nN])
37                         swapon /dev/zvol/${name}
38                         ;;
39                 esac
40         done
41 }
42
43 zfs_start()
44 {
45         if [ `$SYSCTL_N security.jail.jailed` -eq 1 ]; then
46                 zfs_start_jail
47         else
48                 zfs_start_main
49         fi
50 }
51
52 zfs_stop_jail()
53 {
54         if [ `$SYSCTL_N security.jail.mount_allowed` -eq 1 ]; then
55                 zfs unmount -a
56         fi
57 }
58
59 zfs_stop_main()
60 {
61         # Disable swap on ZVOLs with property org.freebsd:swap=on.
62         zfs list -H -o org.freebsd:swap,name -t volume | \
63         while read state name; do
64                 case "${state}" in
65                 [oO][nN])
66                         swapoff /dev/zvol/${name}
67                         ;;
68                 esac
69         done
70         zfs unshare -a
71         zfs unmount -a
72         zfs volfini
73 }
74
75 zfs_stop()
76 {
77         if [ `$SYSCTL_N security.jail.jailed` -eq 1 ]; then
78                 zfs_stop_jail
79         else
80                 zfs_stop_main
81         fi
82 }
83
84 load_rc_config $name
85 run_rc_command "$1"