File initd_cgred.patch of Package libcgroup
---
scripts/init.d/cgred.in | 64 ++++++++++++++++++++++++++++--------------------
1 file changed, 38 insertions(+), 26 deletions(-)
Index: libcgroup-0.41.rc1/scripts/init.d/cgred.in
===================================================================
--- libcgroup-0.41.rc1.orig/scripts/init.d/cgred.in
+++ libcgroup-0.41.rc1/scripts/init.d/cgred.in
@@ -4,6 +4,8 @@
#
# Copyright Red Hat Inc. 2008
#
+# Copyright (C) 2008,2010 Jiri Slaby <jslaby@suse.cz>
+#
# Authors: Steve Olivieri <sjo@redhat.com>
# This program is free software; you can redistribute it and/or modify it
# under the terms of version 2.1 of the GNU Lesser General Public License
@@ -23,10 +25,12 @@
#
### BEGIN INIT INFO
# Provides: cgrulesengd
-# Required-Start: $local_fs $syslog $cgconfig
-# Required-Stop: $local_fs $syslog
+# Required-Start: $local_fs $remote_fs $syslog cgconfig
+# Required-Stop: $local_fs $remote_fs $syslog cgconfig
# Should-Start:
# Should-Stop:
+# Default-Start: 2 3 5
+# Default-Stop: 0 1 6
# Short-Description: start and stop the cgroups rules engine daemon
# Description: CGroup Rules Engine is a tool for automatically using \
# cgroups to classify processes
@@ -39,14 +43,12 @@ CGRED_CONF=/etc/cgrules.conf
# Sanity checks
[ -x $CGRED_BIN ] || exit 1
-# Source function library & LSB routines
-. /etc/rc.d/init.d/functions
. /lib/lsb/init-functions
# Read in configuration options.
-if [ -f "/etc/sysconfig/cgred.conf" ] ; then
- . /etc/sysconfig/cgred.conf
- OPTIONS="$NODAEMON $LOG"
+if [ -f "/etc/sysconfig/cgred" ] ; then
+ . /etc/sysconfig/cgred
+ OPTIONS="$CGRED_OPTIONS"
if [ -n "$LOG_FILE" ]; then
OPTIONS="$OPTIONS --logfile=$LOG_FILE"
fi
@@ -63,15 +65,20 @@ fi
# For convenience
processname=cgrulesengd
servicename=cgred
-lockfile="/var/lock/subsys/$servicename"
+lockfile="/run/$servicename"
pidfile=/var/run/cgred.pid
start()
{
- echo -n $"Starting CGroup Rules Engine Daemon: "
if [ -f "$lockfile" ]; then
- log_failure_msg "$servicename is already running with PID `cat ${pidfile}`"
- return 0
+ pidofproc -k -p $pidfile $CGRED_BIN
+ if [ $? -eq 7 ]; then
+ log_warning_msg "Removing stale lock file $lockfile"
+ rm -f "$lockfile" "$pidfile"
+ else
+ log_failure_msg "$servicename is already running with PID `cat ${pidfile}`"
+ return 1
+ fi
fi
num=`grep "cgroup" /proc/mounts | awk '$3=="cgroup"' | wc -l`
if [ $num -eq 0 ]; then
@@ -79,9 +86,8 @@ start()
log_failure_msg $"Cannot find cgroups, is cgconfig service running?"
return 1
fi
- daemon --check $servicename --pidfile $pidfile $CGRED_BIN $OPTIONS
+ start_daemon -p $pidfile $CGRED_BIN $OPTIONS
retval=$?
- echo
if [ $retval -ne 0 ]; then
return 7
fi
@@ -89,20 +95,18 @@ start()
if [ $? -ne 0 ]; then
return 1
fi
- echo "`pidof $processname`" > $pidfile
+ pidofproc $CGRED_BIN > $pidfile
return 0
}
stop()
{
- echo -n $"Stopping CGroup Rules Engine Daemon..."
if [ ! -f $pidfile ]; then
log_success_msg
return 0
fi
killproc -p $pidfile -TERM "$processname"
retval=$?
- echo
if [ $retval -ne 0 ]; then
return 1
fi
@@ -115,21 +119,32 @@ RETVAL=0
# See how we are called
case "$1" in
start)
+ echo -n "Starting CGroup Rules Engine Daemon"
start
RETVAL=$?
+ rc_status -v
;;
stop)
+ echo -n "Stopping CGroup Rules Engine Daemon"
stop
RETVAL=$?
+ rc_status -v
;;
status)
- status -p $pidfile $servicename
+ echo -n "Checking for CGroup Rules Engine Daemon"
+ checkproc -k -p $pidfile $CGRED_BIN
RETVAL=$?
+ if [ $RETVAL -eq 7 ] ; then
+ rc_failed 3
+ RETVAL=3
+ fi
+ rc_status -v
;;
restart)
stop
start
RETVAL=$?
+ rc_status
;;
condrestart)
if [ -f "$lockfile" ]; then
@@ -137,20 +152,17 @@ case "$1" in
start
RETVAL=$?
fi
+ rc_status
;;
reload|flash)
if [ -f "$lockfile" ]; then
- echo $"Reloading rules configuration..."
- kill -s 12 `cat ${pidfile}`
- RETVAL=$?
- if [ $RETVAL -eq 0 ] ; then
- log_success_msg
- else
- log_failure_msg
- fi
+ echo -n "Reloading rules configuration..."
+ killproc -SIGUSR2 -p $pidfile $CGRED_BIN
else
- log_failure_msg "$servicename is not running."
+ echo "$servicename is not running."
+ rc_failed 7
fi
+ rc_status -v
;;
*)
echo $"Usage: $0 {start|stop|status|restart|condrestart|reload}"