zfs revision 180563
1132718Skan#!/bin/sh 2169689Skan# 3132718Skan# $FreeBSD: head/etc/rc.d/zfs 180563 2008-07-16 19:22:48Z dougb $ 4132718Skan# 5132718Skan 6132718Skan# PROVIDE: zfs 7132718Skan# REQUIRE: mountcritlocal 8132718Skan 9132718Skan. /etc/rc.subr 10132718Skan 11132718Skanname="zfs" 12132718Skanrcvar="zfs_enable" 13132718Skanstart_cmd="zfs_start" 14132718Skanstop_cmd="zfs_stop" 15132718Skanrequired_modules="zfs" 16132718Skan 17132718Skanzfs_start_jail() 18132718Skan{ 19169689Skan if [ `$SYSCTL_N security.jail.mount_allowed` -eq 1 ]; then 20169689Skan zfs mount -a 21132718Skan fi 22132718Skan} 23132718Skan 24132718Skanzfs_start_main() 25132718Skan{ 26132718Skan zfs volinit 27132718Skan zfs mount -a 28132718Skan zfs share -a 29132718Skan if [ ! -r /etc/zfs/exports ]; then 30132718Skan touch /etc/zfs/exports 31132718Skan fi 32132718Skan # Enable swap on ZVOLs with property org.freebsd:swap=on. 33132718Skan zfs list -H -o org.freebsd:swap,name -t volume | \ 34132718Skan while read state name; do 35132718Skan case "${state}" in 36132718Skan [oO][nN]) 37132718Skan swapon /dev/zvol/${name} 38132718Skan ;; 39132718Skan esac 40132718Skan done 41132718Skan} 42132718Skan 43132718Skanzfs_start() 44132718Skan{ 45132718Skan if [ `$SYSCTL_N security.jail.jailed` -eq 1 ]; then 46132718Skan zfs_start_jail 47132718Skan else 48132718Skan zfs_start_main 49132718Skan fi 50132718Skan} 51132718Skan 52169689Skanzfs_stop_jail() 53169689Skan{ 54169689Skan if [ `$SYSCTL_N security.jail.mount_allowed` -eq 1 ]; then 55169689Skan zfs unmount -a 56169689Skan fi 57169689Skan} 58169689Skan 59132718Skanzfs_stop_main() 60132718Skan{ 61132718Skan # Disable swap on ZVOLs with property org.freebsd:swap=on. 62132718Skan zfs list -H -o org.freebsd:swap,name -t volume | \ 63132718Skan while read state name; do 64132718Skan case "${state}" in 65132718Skan [oO][nN]) 66132718Skan swapoff /dev/zvol/${name} 67132718Skan ;; 68132718Skan esac 69132718Skan done 70132718Skan zfs unshare -a 71132718Skan zfs unmount -a 72169689Skan zfs volfini 73169689Skan} 74132718Skan 75132718Skanzfs_stop() 76132718Skan{ 77132718Skan if [ `$SYSCTL_N security.jail.jailed` -eq 1 ]; then 78132718Skan zfs_stop_jail 79132718Skan else 80132718Skan zfs_stop_main 81132718Skan fi 82132718Skan} 83132718Skan 84132718Skanload_rc_config $name 85132718Skanrun_rc_command "$1" 86132718Skan