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