-
Notifications
You must be signed in to change notification settings - Fork 0
/
zpool_spinupd
115 lines (98 loc) · 2.7 KB
/
zpool_spinupd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
#!/bin/sh
#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License, Version 1.0 only
# (the "License"). You may not use this file except in compliance
# with the License.
#
# You can obtain a copy of the license at https://solaris.java.net/license.html.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file OPENSOLARIS.LICENSE.
# If applicable, add the following below this CDDL HEADER, with the
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#
#
# Copyright 2015 Thomas Geppert All rights reserved.
# Use is subject to license terms.
#
# Start and stop the zpool_spinupd daemon for monitoring the wake up
# of zpool disks and spinning up associated zpool member disks in parallel.
PIDFILE=/var/run/zpool_spinupd.pid
PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/sbin
DAEMON=/usr/local/lib/zpool_spinup/zpool_spinupd
NAME=zpool_spinupd
start_daemon()
{
if [ ! -f $DAEMON ]; then
echo "Cannot start zpool_spinup daemon"
echo "$DAEMON file does not exist"
exit 127
fi
if [ ! -x $DAEMON ]; then
echo "Cannot execute $DAEMON"
exit 126
fi
if [ -f $PIDFILE ]; then
echo "zpool_spinup daemon is already running"
exit 1
fi
echo "Starting zpool_spinup daemon"
$DAEMON -p $PIDFILE
}
stop_daemon()
{
if [ ! -f $PIDFILE ]; then
echo "Failed to stop zpool_spinup daemon"
echo "zpool_spinup daemon is not running"
exit 1
else
pid=$(cat $PIDFILE)
fi
if [ `ps -e | grep dtrace | grep "$pid" | wc -l` -eq 0 ] ; then
echo "Failed to stop zpool_spinup daemon"
echo "PID $pid from $PIDFILE not found in process table"
exit 1
fi
echo "Stopping zpool_spinup daemon"
kill -s SIGINT $pid
}
case "$1" in
start)
start_daemon
;;
stop)
stop_daemon
;;
restart)
stop_daemon
sleep 2
start_daemon
;;
status)
if [ -f "$PIDFILE" ]; then
pid=$(cat $PIDFILE)
else
pid="x"
fi
if [ `ps -e | awk '/dtrace/ { print $1;}' | grep "$pid" | wc -l` -ne 0 ] ; then
echo "zpool_spinup daemon is currently running with PID:" $pid
exit 0
else
echo "zpool_spinup daemon is currently not running"
exit 0
fi
;;
*)
echo "Usage: /etc/init.d/$NAME {start|status|stop|restart}"
exit 1
;;
esac
exit 0