1eda14cbcSMatt Macy#!@DEFAULT_INIT_SHELL@ 2*61145dc2SMartin Matuska# SPDX-License-Identifier: BSD-2-Clause 3e92ffd9bSMartin Matuska# shellcheck disable=SC2154 4eda14cbcSMatt Macy# 5eda14cbcSMatt Macy# zfs-zed 6eda14cbcSMatt Macy# 7eda14cbcSMatt Macy# chkconfig: 2345 29 99 8eda14cbcSMatt Macy# description: This script will start and stop the ZFS Event Daemon. 9eda14cbcSMatt Macy# probe: true 10eda14cbcSMatt Macy# 11eda14cbcSMatt Macy### BEGIN INIT INFO 12eda14cbcSMatt Macy# Provides: zfs-zed 13eda14cbcSMatt Macy# Required-Start: zfs-mount 14eda14cbcSMatt Macy# Required-Stop: zfs-mount 15eda14cbcSMatt Macy# Default-Start: 2 3 4 5 16eda14cbcSMatt Macy# Default-Stop: 0 1 6 17eda14cbcSMatt Macy# X-Stop-After: zfs-share 18eda14cbcSMatt Macy# Short-Description: ZFS Event Daemon 19eda14cbcSMatt Macy# Description: zed monitors ZFS events. When a zevent is posted, zed 20eda14cbcSMatt Macy# will run any scripts that have been enabled for the 21eda14cbcSMatt Macy# corresponding zevent class. 22eda14cbcSMatt Macy### END INIT INFO 23eda14cbcSMatt Macy# 24eda14cbcSMatt Macy# Released under the 2-clause BSD license. 25eda14cbcSMatt Macy# 2616038816SMartin Matuska# This script is based on debian/zfsutils.zfs.init from the 2716038816SMartin Matuska# Debian GNU/kFreeBSD zfsutils 8.1-3 package, written by Aurelien Jarno. 28eda14cbcSMatt Macy 29eda14cbcSMatt Macy# Source the common init script 30eda14cbcSMatt Macy. @sysconfdir@/zfs/zfs-functions 31eda14cbcSMatt Macy 32eda14cbcSMatt MacyZED_NAME="zed" 33eda14cbcSMatt MacyZED_PIDFILE="@runstatedir@/$ZED_NAME.pid" 34eda14cbcSMatt Macy 3516038816SMartin Matuska# shellcheck disable=SC2034 36eda14cbcSMatt Macyextra_started_commands="reload" 37eda14cbcSMatt Macy 38eda14cbcSMatt Macy# Exit if the package is not installed 39eda14cbcSMatt Macy[ -x "$ZED" ] || exit 0 40eda14cbcSMatt Macy 41eda14cbcSMatt Macy# ---------------------------------------------------- 42eda14cbcSMatt Macy 43eda14cbcSMatt Macydo_depend() 44eda14cbcSMatt Macy{ 45eda14cbcSMatt Macy after zfs-mount localmount 46eda14cbcSMatt Macy} 47eda14cbcSMatt Macy 48eda14cbcSMatt Macydo_start() 49eda14cbcSMatt Macy{ 50eda14cbcSMatt Macy check_module_loaded "zfs" || exit 0 51eda14cbcSMatt Macy 52eda14cbcSMatt Macy ZED_ARGS="$ZED_ARGS -p $ZED_PIDFILE" 53eda14cbcSMatt Macy 54eda14cbcSMatt Macy zfs_action "Starting ZFS Event Daemon" zfs_daemon_start \ 55eda14cbcSMatt Macy "$ZED_PIDFILE" "$ZED" "$ZED_ARGS" 56eda14cbcSMatt Macy return "$?" 57eda14cbcSMatt Macy} 58eda14cbcSMatt Macy 59eda14cbcSMatt Macydo_stop() 60eda14cbcSMatt Macy{ 6116038816SMartin Matuska local pools 62eda14cbcSMatt Macy check_module_loaded "zfs" || exit 0 63eda14cbcSMatt Macy 64eda14cbcSMatt Macy zfs_action "Stopping ZFS Event Daemon" zfs_daemon_stop \ 6516038816SMartin Matuska "$ZED_PIDFILE" "$ZED" "$ZED_NAME" || return "$?" 6616038816SMartin Matuska 67eda14cbcSMatt Macy # Let's see if we have any pools imported 68eda14cbcSMatt Macy pools=$("$ZPOOL" list -H -oname) 69eda14cbcSMatt Macy if [ -z "$pools" ] 70eda14cbcSMatt Macy then 71eda14cbcSMatt Macy # No pools imported, it is/should be safe/possible to 72eda14cbcSMatt Macy # unload modules. 73716fd348SMartin Matuska zfs_action "Unloading modules" rmmod zfs spl 74eda14cbcSMatt Macy return "$?" 75eda14cbcSMatt Macy fi 76eda14cbcSMatt Macy} 77eda14cbcSMatt Macy 78eda14cbcSMatt Macydo_status() 79eda14cbcSMatt Macy{ 80eda14cbcSMatt Macy check_module_loaded "zfs" || exit 0 81eda14cbcSMatt Macy 82eda14cbcSMatt Macy zfs_daemon_status "$ZED_PIDFILE" "$ZED" "$ZED_NAME" 83eda14cbcSMatt Macy return "$?" 84eda14cbcSMatt Macy} 85eda14cbcSMatt Macy 86eda14cbcSMatt Macydo_reload() 87eda14cbcSMatt Macy{ 88eda14cbcSMatt Macy check_module_loaded "zfs" || exit 0 89eda14cbcSMatt Macy 90eda14cbcSMatt Macy zfs_action "Reloading ZFS Event Daemon" zfs_daemon_reload \ 91eda14cbcSMatt Macy "$ZED_PIDFILE" "$ZED_NAME" 92eda14cbcSMatt Macy return "$?" 93eda14cbcSMatt Macy} 94eda14cbcSMatt Macy 95eda14cbcSMatt Macy# ---------------------------------------------------- 96eda14cbcSMatt Macy 971719886fSMartin Matuskaif @IS_SYSV_RC@ 981719886fSMartin Matuskathen 99eda14cbcSMatt Macy case "$1" in 100eda14cbcSMatt Macy start) 101eda14cbcSMatt Macy do_start 102eda14cbcSMatt Macy ;; 103eda14cbcSMatt Macy stop) 104eda14cbcSMatt Macy do_stop 105eda14cbcSMatt Macy ;; 106eda14cbcSMatt Macy status) 107eda14cbcSMatt Macy do_status 108eda14cbcSMatt Macy ;; 109eda14cbcSMatt Macy reload|force-reload) 110eda14cbcSMatt Macy do_reload 111eda14cbcSMatt Macy ;; 112eda14cbcSMatt Macy restart) 113eda14cbcSMatt Macy do_stop 114eda14cbcSMatt Macy do_start 115eda14cbcSMatt Macy ;; 116eda14cbcSMatt Macy *) 117eda14cbcSMatt Macy [ -n "$1" ] && echo "Error: Unknown command $1." 118eda14cbcSMatt Macy echo "Usage: $0 {start|stop|status|reload|restart}" 119eda14cbcSMatt Macy exit 1 120eda14cbcSMatt Macy ;; 121eda14cbcSMatt Macy esac 122eda14cbcSMatt Macy 123eda14cbcSMatt Macy exit $? 124eda14cbcSMatt Macyelse 125eda14cbcSMatt Macy # Create wrapper functions since Gentoo don't use the case part. 126eda14cbcSMatt Macy depend() { do_depend; } 127eda14cbcSMatt Macy start() { do_start; } 128eda14cbcSMatt Macy stop() { do_stop; } 129eda14cbcSMatt Macy status() { do_status; } 130eda14cbcSMatt Macy reload() { do_reload; } 131eda14cbcSMatt Macyfi 132