sync to 0.30.213
[util-vserver.git] / gentoo / util-vserver
diff --git a/gentoo/util-vserver b/gentoo/util-vserver
new file mode 100644 (file)
index 0000000..1827326
--- /dev/null
@@ -0,0 +1,72 @@
+#!/sbin/runscript
+# Copyright 1999-2007 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+set_helper() {
+       local f="/proc/sys/kernel/vshelper"
+       if [ -e "$f" ]; then
+               echo "$_VSHELPER" > "$f"
+       fi
+       return 0
+}
+
+kill_contexts() {
+       local xid
+       for xid in `ls -1 /proc/virtual`; do
+               [ "$xid" = "info" -o "$xid" = "status" ] && continue
+               $_VATTRIBUTE --xid $xid --set --flag ~persistent
+               $_VKILL --xid $xid -s 15
+               sleep 3
+               $_VKILL --xid $xid -s 9
+       done
+       local alive=0
+       for xid in `ls -1 /proc/virtual`; do
+               [ "$xid" = "info" -o "$xid" = "status" ] && continue
+               let alive+=1
+       done
+       return $alive
+}
+
+start() {
+       : ${UTIL_VSERVER_VARS:=/usr/lib/util-vserver/util-vserver-vars}
+       if [[ ! -e ${UTIL_VSERVER_VARS} ]]; then
+               eerror "Cannot find util-vserver installation"
+               eerror "(the file '$UTIL_VSERVER_VARS' would be expected)"
+               return 1
+       fi
+       
+       source ${UTIL_VSERVER_VARS}
+       source "$_LIB_FUNCTIONS"
+       source "$__PKGLIBDIR/vserver.functions"
+
+       ebegin "Setting vshelper path to $_VSHELPER"
+       set_helper
+       eend $?
+
+       ebegin "Loading default device map"
+       loadDeviceMap 0 "$__CONFDIR/.defaults/apps/vdevmap"
+       eend $?
+}
+
+stop() {
+       : ${UTIL_VSERVER_VARS:=/usr/lib/util-vserver/util-vserver-vars}
+       if [[ ! -e ${UTIL_VSERVER_VARS} ]]; then
+               eerror "Cannot find util-vserver installation"
+               eerror "(the file '$UTIL_VSERVER_VARS' would be expected)"
+               return 1
+       fi
+       
+       source ${UTIL_VSERVER_VARS}
+       source "$_LIB_FUNCTIONS"
+       source "$__PKGLIBDIR/vserver.functions"
+
+       ebegin "Stopping all running guests"
+       $_START_VSERVERS -j 1 --all --stop
+       eend $?
+
+       ebegin "Killing all running contexts"
+       kill_contexts
+       eend $?
+}
+
+# vim:ts=4:filetype=gentoo-init-d