xref: /freebsd/sys/contrib/openzfs/etc/init.d/zfs-zed.in (revision eda14cbc264d6969b02f2b1994cef11148e914f1)
1*eda14cbcSMatt Macy#!@DEFAULT_INIT_SHELL@
2*eda14cbcSMatt Macy#
3*eda14cbcSMatt Macy# zfs-zed
4*eda14cbcSMatt Macy#
5*eda14cbcSMatt Macy# chkconfig:    2345 29 99
6*eda14cbcSMatt Macy# description:  This script will start and stop the ZFS Event Daemon.
7*eda14cbcSMatt Macy# probe: true
8*eda14cbcSMatt Macy#
9*eda14cbcSMatt Macy### BEGIN INIT INFO
10*eda14cbcSMatt Macy# Provides:          zfs-zed
11*eda14cbcSMatt Macy# Required-Start:    zfs-mount
12*eda14cbcSMatt Macy# Required-Stop:     zfs-mount
13*eda14cbcSMatt Macy# Default-Start:     2 3 4 5
14*eda14cbcSMatt Macy# Default-Stop:      0 1 6
15*eda14cbcSMatt Macy# X-Stop-After:      zfs-share
16*eda14cbcSMatt Macy# Short-Description: ZFS Event Daemon
17*eda14cbcSMatt Macy# Description:       zed monitors ZFS events. When a zevent is posted, zed
18*eda14cbcSMatt Macy#                    will run any scripts that have been enabled for the
19*eda14cbcSMatt Macy#                    corresponding zevent class.
20*eda14cbcSMatt Macy### END INIT INFO
21*eda14cbcSMatt Macy#
22*eda14cbcSMatt Macy# Released under the 2-clause BSD license.
23*eda14cbcSMatt Macy#
24*eda14cbcSMatt Macy# The original script that acted as a template for this script came from
25*eda14cbcSMatt Macy# the Debian GNU/Linux kFreeBSD ZFS packages (which did not include a
26*eda14cbcSMatt Macy# licensing stansa) in the commit dated Mar 24, 2011:
27*eda14cbcSMatt Macy#   https://github.com/zfsonlinux/pkg-zfs/commit/80a3ae582b59c0250d7912ba794dca9e669e605a
28*eda14cbcSMatt Macy
29*eda14cbcSMatt Macy# Source the common init script
30*eda14cbcSMatt Macy. @sysconfdir@/zfs/zfs-functions
31*eda14cbcSMatt Macy
32*eda14cbcSMatt MacyZED_NAME="zed"
33*eda14cbcSMatt MacyZED_PIDFILE="@runstatedir@/$ZED_NAME.pid"
34*eda14cbcSMatt Macy
35*eda14cbcSMatt Macyextra_started_commands="reload"
36*eda14cbcSMatt Macy
37*eda14cbcSMatt Macy# Exit if the package is not installed
38*eda14cbcSMatt Macy[ -x "$ZED" ] || exit 0
39*eda14cbcSMatt Macy
40*eda14cbcSMatt Macy# ----------------------------------------------------
41*eda14cbcSMatt Macy
42*eda14cbcSMatt Macydo_depend()
43*eda14cbcSMatt Macy{
44*eda14cbcSMatt Macy	after zfs-mount localmount
45*eda14cbcSMatt Macy}
46*eda14cbcSMatt Macy
47*eda14cbcSMatt Macydo_start()
48*eda14cbcSMatt Macy{
49*eda14cbcSMatt Macy	check_module_loaded "zfs" || exit 0
50*eda14cbcSMatt Macy
51*eda14cbcSMatt Macy	ZED_ARGS="$ZED_ARGS -p $ZED_PIDFILE"
52*eda14cbcSMatt Macy
53*eda14cbcSMatt Macy	zfs_action "Starting ZFS Event Daemon" zfs_daemon_start \
54*eda14cbcSMatt Macy	    "$ZED_PIDFILE" "$ZED" "$ZED_ARGS"
55*eda14cbcSMatt Macy	return "$?"
56*eda14cbcSMatt Macy}
57*eda14cbcSMatt Macy
58*eda14cbcSMatt Macydo_stop()
59*eda14cbcSMatt Macy{
60*eda14cbcSMatt Macy	local pools RET
61*eda14cbcSMatt Macy	check_module_loaded "zfs" || exit 0
62*eda14cbcSMatt Macy
63*eda14cbcSMatt Macy	zfs_action "Stopping ZFS Event Daemon" zfs_daemon_stop \
64*eda14cbcSMatt Macy	   "$ZED_PIDFILE" "$ZED" "$ZED_NAME"
65*eda14cbcSMatt Macy	if [ "$?" -eq "0" ]
66*eda14cbcSMatt Macy	then
67*eda14cbcSMatt Macy		# Let's see if we have any pools imported
68*eda14cbcSMatt Macy		pools=$("$ZPOOL" list -H -oname)
69*eda14cbcSMatt Macy		if [ -z "$pools" ]
70*eda14cbcSMatt Macy		then
71*eda14cbcSMatt Macy			# No pools imported, it is/should be safe/possible to
72*eda14cbcSMatt Macy			# unload modules.
73*eda14cbcSMatt Macy			zfs_action "Unloading modules" rmmod zfs zunicode \
74*eda14cbcSMatt Macy			    zavl zcommon znvpair zlua spl
75*eda14cbcSMatt Macy			return "$?"
76*eda14cbcSMatt Macy		fi
77*eda14cbcSMatt Macy	else
78*eda14cbcSMatt Macy		return "$?"
79*eda14cbcSMatt Macy	fi
80*eda14cbcSMatt Macy}
81*eda14cbcSMatt Macy
82*eda14cbcSMatt Macydo_status()
83*eda14cbcSMatt Macy{
84*eda14cbcSMatt Macy	check_module_loaded "zfs" || exit 0
85*eda14cbcSMatt Macy
86*eda14cbcSMatt Macy	zfs_daemon_status "$ZED_PIDFILE" "$ZED" "$ZED_NAME"
87*eda14cbcSMatt Macy	return "$?"
88*eda14cbcSMatt Macy}
89*eda14cbcSMatt Macy
90*eda14cbcSMatt Macydo_reload()
91*eda14cbcSMatt Macy{
92*eda14cbcSMatt Macy	check_module_loaded "zfs" || exit 0
93*eda14cbcSMatt Macy
94*eda14cbcSMatt Macy	zfs_action "Reloading ZFS Event Daemon" zfs_daemon_reload \
95*eda14cbcSMatt Macy	    "$ZED_PIDFILE" "$ZED_NAME"
96*eda14cbcSMatt Macy	return "$?"
97*eda14cbcSMatt Macy}
98*eda14cbcSMatt Macy
99*eda14cbcSMatt Macy# ----------------------------------------------------
100*eda14cbcSMatt Macy
101*eda14cbcSMatt Macyif [ ! -e /sbin/openrc-run ]; then
102*eda14cbcSMatt Macy	case "$1" in
103*eda14cbcSMatt Macy		start)
104*eda14cbcSMatt Macy			do_start
105*eda14cbcSMatt Macy			;;
106*eda14cbcSMatt Macy		stop)
107*eda14cbcSMatt Macy			do_stop
108*eda14cbcSMatt Macy			;;
109*eda14cbcSMatt Macy		status)
110*eda14cbcSMatt Macy			do_status
111*eda14cbcSMatt Macy			;;
112*eda14cbcSMatt Macy		reload|force-reload)
113*eda14cbcSMatt Macy			do_reload
114*eda14cbcSMatt Macy			;;
115*eda14cbcSMatt Macy		restart)
116*eda14cbcSMatt Macy			do_stop
117*eda14cbcSMatt Macy			do_start
118*eda14cbcSMatt Macy			;;
119*eda14cbcSMatt Macy		*)
120*eda14cbcSMatt Macy			[ -n "$1" ] && echo "Error: Unknown command $1."
121*eda14cbcSMatt Macy			echo "Usage: $0 {start|stop|status|reload|restart}"
122*eda14cbcSMatt Macy			exit 1
123*eda14cbcSMatt Macy			;;
124*eda14cbcSMatt Macy	esac
125*eda14cbcSMatt Macy
126*eda14cbcSMatt Macy	exit $?
127*eda14cbcSMatt Macyelse
128*eda14cbcSMatt Macy	# Create wrapper functions since Gentoo don't use the case part.
129*eda14cbcSMatt Macy	depend() { do_depend; }
130*eda14cbcSMatt Macy	start() { do_start; }
131*eda14cbcSMatt Macy	stop() { do_stop; }
132*eda14cbcSMatt Macy	status() { do_status; }
133*eda14cbcSMatt Macy	reload() { do_reload; }
134*eda14cbcSMatt Macyfi
135