1168410Spjd#!/bin/sh
2168410Spjd#
3168410Spjd# $FreeBSD$
4168410Spjd#
5168410Spjd
6168410Spjd# PROVIDE: zfs
7168410Spjd# REQUIRE: mountcritlocal
8168410Spjd
9168410Spjd. /etc/rc.subr
10168410Spjd
11168410Spjdname="zfs"
12168410Spjdrcvar="zfs_enable"
13168410Spjdstart_cmd="zfs_start"
14168410Spjdstop_cmd="zfs_stop"
15168410Spjdrequired_modules="zfs"
16168410Spjd
17168956Spjdzfs_start_jail()
18168410Spjd{
19168956Spjd	if [ `$SYSCTL_N security.jail.mount_allowed` -eq 1 ]; then
20168956Spjd		zfs mount -a
21168956Spjd	fi
22168956Spjd}
23168956Spjd
24168956Spjdzfs_start_main()
25168956Spjd{
26253076Savg	zfs mount -va
27168410Spjd	zfs share -a
28168686Spjd	if [ ! -r /etc/zfs/exports ]; then
29168686Spjd		touch /etc/zfs/exports
30168686Spjd	fi
31168410Spjd}
32168410Spjd
33168956Spjdzfs_start()
34168410Spjd{
35168956Spjd	if [ `$SYSCTL_N security.jail.jailed` -eq 1 ]; then
36168956Spjd		zfs_start_jail
37168956Spjd	else
38168956Spjd		zfs_start_main
39168956Spjd	fi
40168956Spjd}
41168956Spjd
42168956Spjdzfs_stop_jail()
43168956Spjd{
44168956Spjd	if [ `$SYSCTL_N security.jail.mount_allowed` -eq 1 ]; then
45168956Spjd		zfs unmount -a
46168956Spjd	fi
47168956Spjd}
48168956Spjd
49168956Spjdzfs_stop_main()
50168956Spjd{
51168410Spjd	zfs unshare -a
52168686Spjd	zfs unmount -a
53168410Spjd}
54168410Spjd
55168956Spjdzfs_stop()
56168956Spjd{
57168956Spjd	if [ `$SYSCTL_N security.jail.jailed` -eq 1 ]; then
58168956Spjd		zfs_stop_jail
59168956Spjd	else
60168956Spjd		zfs_stop_main
61168956Spjd	fi
62168956Spjd}
63168956Spjd
64168410Spjdload_rc_config $name
65168410Spjdrun_rc_command "$1"
66