X-Git-Url: http://git.linux-vserver.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=gentoo%2Futil-vserver;h=80548d9b44f791ef573a677988ac215e8ecffec7;hb=1bd485daf1544e9b7b9bf020783f6aa0b0085c0b;hp=715b84c74b5c7c92569e7578cb939861ebfbcb33;hpb=81b438ba5510581d95fc5daa253743143f50544b;p=util-vserver.git diff --git a/gentoo/util-vserver b/gentoo/util-vserver index 715b84c..80548d9 100644 --- a/gentoo/util-vserver +++ b/gentoo/util-vserver @@ -10,9 +10,10 @@ set_helper() { return 0 } -kill_contexts() { +kill_contexts() +{ local xid - for xid in `ls -1 /proc/virtual`; do + 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 @@ -20,41 +21,57 @@ kill_contexts() { $_VKILL --xid $xid -s 9 done local alive=0 - for xid in `ls -1 /proc/virtual`; do + for xid in `ls -1 /proc/virtual 2>/dev/null`; do [ "$xid" = "info" -o "$xid" = "status" ] && continue let alive+=1 done - return $alive + 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 + 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} + . ${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 'loadDeviceMap 0 "$__CONFDIR/.defaults/apps/vdevmap"' + $__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 + 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} + . ${UTIL_VSERVER_VARS} ebegin "Stopping all running guests" $_START_VSERVERS -j 1 --all --stop @@ -63,6 +80,13 @@ stop() { 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