#!/bin/sh
### BEGIN INIT INFO
# Provides: sheepdog
-# Required-Start: $network $remote_fs $syslog
-# Required-Stop: $network $remote_fs $syslog
+# Required-Start: $network $remote_fs $syslog cman
+# Required-Stop: $network $remote_fs $syslog cman
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Sheepdog server
DESC="Sheepdog Server" # Introduce a short description here
NAME=sheepdog # Introduce the short server's name here
DAEMON=/usr/sbin/sheep # Introduce the server's location here
-DAEMON_ARGS="" # Arguments to run the daemon with
-##PIDFILE=/var/run/sheep.pid
SCRIPTNAME=/etc/init.d/$NAME
+PIDFILE="/var/run/sheep.pid"
# Exit if the package is not installed
[ -x $DAEMON ] || exit 0
-# Defaults
-SHEEPDOG_START_SEQUENCE="_1"
-SHEEPDOG_DEAMON_ARGS_1=""
-SHEEPDOG_PATH_1="/var/lib/sheepdog/disc1"
+ROOTDIR="/var/lib/sheepdog/"
+JOURNALSIZE="256"
+DAEMON_ARGS=""
# Read configuration variable file if it is present
[ -r /etc/default/$NAME ] && . /etc/default/$NAME
. /lib/lsb/init-functions
-status()
-{
- pid=$(pidof $1 2>/dev/null)
- rtrn=$?
- if [ $rtrn -ne 0 ]; then
- echo "$1 is stopped"
- else
- echo "$1 (pid $pid) is running..."
- fi
- return $rtrn
-}
-
#
# Function that starts the daemon/service
#
# 0 if daemon has been started
# 1 if daemon was already running
# 2 if daemon could not be started
+ ulimit -n 1024000 #avoid check_host_env(395) WARN: Allowed open files 1024 too small, suggested 1024000 warning message
+ ulimit -c unlimited #avoid check_host_env(404) Allowed core file size 0, suggested unlimited warning message
+ DAEMON_ARGS="${DAEMON_ARGS} --pidfile ${PIDFILE}"
+ DAEMON_ARGS="${DAEMON_ARGS} $ROOTDIR"
+
+ # /path/to/meta-store,/path/to/disk1{,/path/to/disk2,...}
+ for d in $ROOTDIR/disc*
+ do
+ if [ -d "$d" ]; then
+ DAEMON_ARGS="${DAEMON_ARGS},$d"
+ fi
+ done
- for SHEEP in $SHEEPDOG_START_SEQUENCE; do
- eval DAEMON_ARGS=\$SHEEPDOG_DEAMON_ARGS$SHEEP
- eval SHEEPDOG_PATH=\$SHEEPDOG_PATH$SHEEP
- eval PIDFILE=/var/run/$NAME$SHEEP.pid
-
- mkdir -p $SHEEPDOG_PATH
-
- status_of_proc -p ${PIDFILE} $DAEMON "$NAME" >/dev/null && continue
+ if [ -d "$ROOTDIR/journal" ]; then
+ DAEMON_ARGS="${DAEMON_ARGS} -j dir=$ROOTDIR/journal,size=$JOURNALSIZE"
- start-stop-daemon --start --quiet --pidfile ${PIDFILE} --exec $DAEMON -- --pidfile ${PIDFILE} $DAEMON_ARGS $SHEEPDOG_PATH || return 2
- done
+ fi
+ status_of_proc -p ${PIDFILE} $DAEMON "$NAME" >/dev/null && continue
+ start-stop-daemon --start --quiet --pidfile ${PIDFILE} --exec $DAEMON -- $DAEMON_ARGS || return 2
return 0
}
# 2 if daemon could not be stopped
# other if a failure occurred
- RETVAL=0
- for SHEEP in $SHEEPDOG_START_SEQUENCE; do
- eval DAEMON_ARGS=\$SHEEPDOG_DEAMON_ARGS$SHEEP
- eval SHEEPDOG_PATH=\$SHEEPDOG_PATH$SHEEP
- eval PIDFILE=/var/run/$NAME$SHEEP.pid
- start-stop-daemon --stop --oknodo --retry=TERM/20/KILL/5 --quiet --pidfile ${PIDFILE} --exec $DAEMON || RETVAL=2
- done
-
- return "$RETVAL"
+ start-stop-daemon --stop --oknodo --retry=TERM/20/KILL/5 --quiet --pidfile ${PIDFILE} --exec $DAEMON || return 2
}
case "$1" in
;;
status)
- for SHEEP in $SHEEPDOG_START_SEQUENCE; do
- eval DAEMON_ARGS=\$SHEEPDOG_DEAMON_ARGS$SHEEP
- eval SHEEPDOG_PATH=\$SHEEPDOG_PATH$SHEEP
- eval PIDFILE=/var/run/$NAME$SHEEP.pid
- status_of_proc -p ${PIDFILE} $DAEMON "$NAME${SHEEP}" || exit $?
- done
+ status_of_proc -p ${PIDFILE} $DAEMON "$NAME ${dir}" || exit 1
;;
restart|force-reload)
log_daemon_msg "Restarting $DESC" "$NAME"