#!/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 2>/dev/null`; 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 2>/dev/null`; do [ "$xid" = "info" -o "$xid" = "status" ] && continue let alive+=1 done test $alive = 0 } create_dirs() { $_MKDIR -p "$__RUNDIR" && $_MKDIR -p "$__VSHELPERSTATEDIR" && $_MKDIR -p `$_READLINK "$__PKGSTATEREVDIR"` } 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 . ${UTIL_VSERVER_VARS} ebegin "Creating directories for $PACKAGE_NAME" create_dirs eend $? ebegin "Setting vshelper path to $_VSHELPER" set_helper eend $? ebegin "Loading default device map" $__PKGLIBDIR/bash-wrapper 'handleDeviceMap --set 0 "$__CONFDIR/.defaults/apps/vdevmap"' eend $? $__PKGLIBDIR/bash-wrapper 'hasCgroup' if [ $? -eq 0 ]; then ebegin "Mounting cgroup-hierarchy" $__PKGLIBDIR/bash-wrapper '_generateCgroupOptions; test -n "$CGROUP_MNT" || exit 0; $_MKDIR -p "$CGROUP_MNT"; $_MOUNT -t cgroup -o "$CGROUP_SUBSYS" vserver "$CGROUP_MNT"' eend $? fi } 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 . ${UTIL_VSERVER_VARS} ebegin "Stopping all running guests" $_START_VSERVERS -j 1 --all --stop eend $? ebegin "Killing all running contexts" kill_contexts eend $? $__PKGLIBDIR/bash-wrapper 'hasCgroup' if [ $? -eq 0 ]; then ebegin "Unmounting cgroup-hierarchy" $__PKGLIBDIR/bash-wrapper '_generateCgroupOptions; test -n "$CGROUP_MNT" || exit 0; $_UMOUNT "$CGROUP_MNT"' eend $? fi } # vim:ts=4:filetype=gentoo-init-d