]> git.pld-linux.org Git - packages/util-vserver.git/blobdiff - util-vserver.init
- up to pre3000
[packages/util-vserver.git] / util-vserver.init
index c297b4064476f18d49dce0e4a022e0f877c3f43d..e0a60609b976607195c0492fd44fc9a55385c73b 100644 (file)
@@ -2,9 +2,18 @@
 #
 # util-vserver:        sets the path to vshelper and kills all guest processes
 #
-# chkconfig:   2345 10 99
+# chkconfig:   2345 10 70
 # description: Sets the path to vshelper and kills all guest processes
 
+# if kernel not capable, exit early
+if [ ! -d /proc/virtual ]; then
+       case "$1" in
+       start|stop|reload|force-reload|restart)
+               exit 0
+               ;;
+       esac
+fi
+
 # Source function library
 . /etc/rc.d/init.d/functions
 
@@ -21,10 +30,14 @@ start()
        if [ -e /proc/sys/kernel/vshelper ]; then
                echo "$_VSHELPER" >/proc/sys/kernel/vshelper
                ok
+               RETVAL1=0
        else
                fail
+               RETVAL1=1
        fi
        run_cmd "Loading default device map" $__PKGLIBDIR/bash-wrapper "handleDeviceMap --set 0 $__CONFDIR/.defaults/apps/vdevmap"
+       RETVAL=$?
+       [ "$RETVAL" -eq 0 -a "$RETVAL1" -eq 0 ] && touch /var/lock/subsys/util-vserver
 }
 
 # Stop all running, but non-default guests"
@@ -32,14 +45,14 @@ stop()
 {
        run_cmd "Stopping all running guests" $_START_VSERVERS -j 1 --all --stop
 
-       xids=$(cd /proc/virtual ; ls -1 | egrep -v 'info|status')
+       xids=$(ls -1 /proc/virtual 2>/dev/null | egrep -v 'info|status' 2>/dev/null)
        if [ -n "$xids" ]; then
                show "Sending all contexts the TERM signal"
                for xid in $xids; do
                        $_VATTRIBUTE --xid $xid --set --flag ~persistent
                        $_VKILL --xid $xid -s 15
                done
-               xids=$(cd /proc/virtual ; ls -1 | egrep -v 'info|status')
+               xids=$(ls -1 /proc/virtual 2>/dev/null | egrep -v 'info|status' 2>/dev/null)
                if [ -n "$xids" ]; then
                        fail
                else
@@ -53,13 +66,14 @@ stop()
                        $_VATTRIBUTE --xid $xid --set --flag ~persistent
                        $_VKILL --xid $xid -s 9
                done
-               xids=$(cd /proc/virtual ; ls -1 | egrep -v 'info|status')
+               xids=$(ls -1 /proc/virtual 2>/dev/null | egrep -v 'info|status' 2>/dev/null)
                if [ -n "$xids" ]; then
                        fail
                else
                        ok
                fi
        fi
+       rm -f /var/lock/subsys/util-vserver >/dev/null 2>&1
 }
 
 RETVAL=0
@@ -71,11 +85,9 @@ case "$1" in
   stop)
        stop
        ;;
-  restart)
-       stop
-       start
-       ;;
-  reload|force-reload)
+# restart behaves like reload because a stop-start sequence
+# would kill all running vservers AND would not start them
+  restart|reload|force-reload)
        start
        [ $? -ne 0 ] && RETVAL=7
        ;;
This page took 0.078983 seconds and 4 git commands to generate.