zfs revision 177866
1#!/bin/sh
2#
3# $FreeBSD: head/etc/rc.d/zfs 177866 2008-04-02 19:29:16Z dougb $
4#
5
6# PROVIDE: zfs
7# REQUIRE: mountcritlocal
8
9. /etc/rc.subr
10
11name="zfs"
12rcvar="zfs_enable"
13start_cmd="zfs_start"
14stop_cmd="zfs_stop"
15required_modules="zfs"
16
17zfs_start_jail()
18{
19	if [ `$SYSCTL_N security.jail.mount_allowed` -eq 1 ]; then
20		zfs mount -a
21	fi
22}
23
24zfs_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
43zfs_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
52zfs_stop_jail()
53{
54	if [ `$SYSCTL_N security.jail.mount_allowed` -eq 1 ]; then
55		zfs unmount -a
56	fi
57}
58
59zfs_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
75zfs_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
84load_rc_config $name
85run_rc_command "$1"
86