1eda14cbcSMatt Macy#!@DEFAULT_INIT_SHELL@ 2*e92ffd9bSMartin Matuska# shellcheck disable=SC2154 3eda14cbcSMatt Macy# 4eda14cbcSMatt Macy# zfs-zed 5eda14cbcSMatt Macy# 6eda14cbcSMatt Macy# chkconfig: 2345 29 99 7eda14cbcSMatt Macy# description: This script will start and stop the ZFS Event Daemon. 8eda14cbcSMatt Macy# probe: true 9eda14cbcSMatt Macy# 10eda14cbcSMatt Macy### BEGIN INIT INFO 11eda14cbcSMatt Macy# Provides: zfs-zed 12eda14cbcSMatt Macy# Required-Start: zfs-mount 13eda14cbcSMatt Macy# Required-Stop: zfs-mount 14eda14cbcSMatt Macy# Default-Start: 2 3 4 5 15eda14cbcSMatt Macy# Default-Stop: 0 1 6 16eda14cbcSMatt Macy# X-Stop-After: zfs-share 17eda14cbcSMatt Macy# Short-Description: ZFS Event Daemon 18eda14cbcSMatt Macy# Description: zed monitors ZFS events. When a zevent is posted, zed 19eda14cbcSMatt Macy# will run any scripts that have been enabled for the 20eda14cbcSMatt Macy# corresponding zevent class. 21eda14cbcSMatt Macy### END INIT INFO 22eda14cbcSMatt Macy# 23eda14cbcSMatt Macy# Released under the 2-clause BSD license. 24eda14cbcSMatt Macy# 2516038816SMartin Matuska# This script is based on debian/zfsutils.zfs.init from the 2616038816SMartin Matuska# Debian GNU/kFreeBSD zfsutils 8.1-3 package, written by Aurelien Jarno. 27eda14cbcSMatt Macy 28eda14cbcSMatt Macy# Source the common init script 29eda14cbcSMatt Macy. @sysconfdir@/zfs/zfs-functions 30eda14cbcSMatt Macy 31eda14cbcSMatt MacyZED_NAME="zed" 32eda14cbcSMatt MacyZED_PIDFILE="@runstatedir@/$ZED_NAME.pid" 33eda14cbcSMatt Macy 3416038816SMartin Matuska# shellcheck disable=SC2034 35eda14cbcSMatt Macyextra_started_commands="reload" 36eda14cbcSMatt Macy 37eda14cbcSMatt Macy# Exit if the package is not installed 38eda14cbcSMatt Macy[ -x "$ZED" ] || exit 0 39eda14cbcSMatt Macy 40eda14cbcSMatt Macy# ---------------------------------------------------- 41eda14cbcSMatt Macy 42eda14cbcSMatt Macydo_depend() 43eda14cbcSMatt Macy{ 44eda14cbcSMatt Macy after zfs-mount localmount 45eda14cbcSMatt Macy} 46eda14cbcSMatt Macy 47eda14cbcSMatt Macydo_start() 48eda14cbcSMatt Macy{ 49eda14cbcSMatt Macy check_module_loaded "zfs" || exit 0 50eda14cbcSMatt Macy 51eda14cbcSMatt Macy ZED_ARGS="$ZED_ARGS -p $ZED_PIDFILE" 52eda14cbcSMatt Macy 53eda14cbcSMatt Macy zfs_action "Starting ZFS Event Daemon" zfs_daemon_start \ 54eda14cbcSMatt Macy "$ZED_PIDFILE" "$ZED" "$ZED_ARGS" 55eda14cbcSMatt Macy return "$?" 56eda14cbcSMatt Macy} 57eda14cbcSMatt Macy 58eda14cbcSMatt Macydo_stop() 59eda14cbcSMatt Macy{ 6016038816SMartin Matuska local pools 61eda14cbcSMatt Macy check_module_loaded "zfs" || exit 0 62eda14cbcSMatt Macy 63eda14cbcSMatt Macy zfs_action "Stopping ZFS Event Daemon" zfs_daemon_stop \ 6416038816SMartin Matuska "$ZED_PIDFILE" "$ZED" "$ZED_NAME" || return "$?" 6516038816SMartin Matuska 66eda14cbcSMatt Macy # Let's see if we have any pools imported 67eda14cbcSMatt Macy pools=$("$ZPOOL" list -H -oname) 68eda14cbcSMatt Macy if [ -z "$pools" ] 69eda14cbcSMatt Macy then 70eda14cbcSMatt Macy # No pools imported, it is/should be safe/possible to 71eda14cbcSMatt Macy # unload modules. 72eda14cbcSMatt Macy zfs_action "Unloading modules" rmmod zfs zunicode \ 73eda14cbcSMatt Macy zavl zcommon znvpair zlua 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 97eda14cbcSMatt Macyif [ ! -e /sbin/openrc-run ]; then 98eda14cbcSMatt Macy case "$1" in 99eda14cbcSMatt Macy start) 100eda14cbcSMatt Macy do_start 101eda14cbcSMatt Macy ;; 102eda14cbcSMatt Macy stop) 103eda14cbcSMatt Macy do_stop 104eda14cbcSMatt Macy ;; 105eda14cbcSMatt Macy status) 106eda14cbcSMatt Macy do_status 107eda14cbcSMatt Macy ;; 108eda14cbcSMatt Macy reload|force-reload) 109eda14cbcSMatt Macy do_reload 110eda14cbcSMatt Macy ;; 111eda14cbcSMatt Macy restart) 112eda14cbcSMatt Macy do_stop 113eda14cbcSMatt Macy do_start 114eda14cbcSMatt Macy ;; 115eda14cbcSMatt Macy *) 116eda14cbcSMatt Macy [ -n "$1" ] && echo "Error: Unknown command $1." 117eda14cbcSMatt Macy echo "Usage: $0 {start|stop|status|reload|restart}" 118eda14cbcSMatt Macy exit 1 119eda14cbcSMatt Macy ;; 120eda14cbcSMatt Macy esac 121eda14cbcSMatt Macy 122eda14cbcSMatt Macy exit $? 123eda14cbcSMatt Macyelse 124eda14cbcSMatt Macy # Create wrapper functions since Gentoo don't use the case part. 125eda14cbcSMatt Macy depend() { do_depend; } 126eda14cbcSMatt Macy start() { do_start; } 127eda14cbcSMatt Macy stop() { do_stop; } 128eda14cbcSMatt Macy status() { do_status; } 129eda14cbcSMatt Macy reload() { do_reload; } 130eda14cbcSMatt Macyfi 131