xref: /freebsd/libexec/rc/rc.d/zfs (revision f99f0ee14e3af81c23150a6a340259ca8a33d01a)
10696600cSBjoern A. Zeeb#!/bin/sh
20696600cSBjoern A. Zeeb#
30696600cSBjoern A. Zeeb#
40696600cSBjoern A. Zeeb
50696600cSBjoern A. Zeeb# PROVIDE: zfs
60696600cSBjoern A. Zeeb# REQUIRE: zfsbe
70696600cSBjoern A. Zeeb# BEFORE: FILESYSTEMS var
80696600cSBjoern A. Zeeb
90696600cSBjoern A. Zeeb. /etc/rc.subr
100696600cSBjoern A. Zeeb
110696600cSBjoern A. Zeebname="zfs"
120696600cSBjoern A. Zeebdesc="Mount and share ZFS datasets"
130696600cSBjoern A. Zeebrcvar="zfs_enable"
140696600cSBjoern A. Zeebstart_cmd="zfs_start"
1597aeda22SMateusz Piotrowskistart_postcmd="zfs_poststart"
160696600cSBjoern A. Zeebstop_cmd="zfs_stop"
170696600cSBjoern A. Zeebrequired_modules="zfs"
180696600cSBjoern A. Zeeb
190696600cSBjoern A. Zeebzfs_start_jail()
200696600cSBjoern A. Zeeb{
210696600cSBjoern A. Zeeb	if [ `$SYSCTL_N security.jail.mount_allowed` -eq 1 ]; then
220696600cSBjoern A. Zeeb		zfs mount -a
230696600cSBjoern A. Zeeb	fi
240696600cSBjoern A. Zeeb}
250696600cSBjoern A. Zeeb
260696600cSBjoern A. Zeebzfs_start_main()
270696600cSBjoern A. Zeeb{
280696600cSBjoern A. Zeeb	zfs mount -va
290696600cSBjoern A. Zeeb	zfs share -a
300696600cSBjoern A. Zeeb	if [ ! -r /etc/zfs/exports ]; then
310696600cSBjoern A. Zeeb		touch /etc/zfs/exports
320696600cSBjoern A. Zeeb	fi
330696600cSBjoern A. Zeeb}
340696600cSBjoern A. Zeeb
350696600cSBjoern A. Zeebzfs_start()
360696600cSBjoern A. Zeeb{
370696600cSBjoern A. Zeeb	if [ `$SYSCTL_N security.jail.jailed` -eq 1 ]; then
380696600cSBjoern A. Zeeb		zfs_start_jail
390696600cSBjoern A. Zeeb	else
400696600cSBjoern A. Zeeb		zfs_start_main
410696600cSBjoern A. Zeeb	fi
420696600cSBjoern A. Zeeb}
430696600cSBjoern A. Zeeb
4497aeda22SMateusz Piotrowskizfs_poststart()
4597aeda22SMateusz Piotrowski{
4697aeda22SMateusz Piotrowski	# Some of the keys to decrypt datasets are potentially stored on ZFS
4797aeda22SMateusz Piotrowski	# datasets that just got mounted. Let's try to load those keys and
4897aeda22SMateusz Piotrowski	# mount the datasets.
4997aeda22SMateusz Piotrowski	if checkyesno zfskeys_enable; then
5097aeda22SMateusz Piotrowski		/etc/rc.d/zfskeys start
5197aeda22SMateusz Piotrowski		zfs_start
5297aeda22SMateusz Piotrowski	fi
5397aeda22SMateusz Piotrowski}
5497aeda22SMateusz Piotrowski
550696600cSBjoern A. Zeebzfs_stop_jail()
560696600cSBjoern A. Zeeb{
570696600cSBjoern A. Zeeb	if [ `$SYSCTL_N security.jail.mount_allowed` -eq 1 ]; then
580696600cSBjoern A. Zeeb		zfs unmount -a
590696600cSBjoern A. Zeeb	fi
600696600cSBjoern A. Zeeb}
610696600cSBjoern A. Zeeb
620696600cSBjoern A. Zeebzfs_stop_main()
630696600cSBjoern A. Zeeb{
640696600cSBjoern A. Zeeb	zfs unshare -a
650696600cSBjoern A. Zeeb	zfs unmount -a
660696600cSBjoern A. Zeeb}
670696600cSBjoern A. Zeeb
680696600cSBjoern A. Zeebzfs_stop()
690696600cSBjoern A. Zeeb{
700696600cSBjoern A. Zeeb	if [ `$SYSCTL_N security.jail.jailed` -eq 1 ]; then
710696600cSBjoern A. Zeeb		zfs_stop_jail
720696600cSBjoern A. Zeeb	else
730696600cSBjoern A. Zeeb		zfs_stop_main
740696600cSBjoern A. Zeeb	fi
750696600cSBjoern A. Zeeb}
760696600cSBjoern A. Zeeb
770696600cSBjoern A. Zeebload_rc_config $name
78*f99f0ee1SAlexander Leidinger
79*f99f0ee1SAlexander Leidinger# doesn't make sense to run in a svcj: mounting / config setting
80*f99f0ee1SAlexander Leidingerzfs_svcj="NO"
81*f99f0ee1SAlexander Leidinger
820696600cSBjoern A. Zeebrun_rc_command "$1"
83