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