X-Git-Url: http://git.linux-vserver.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=gentoo%2Futil-vserver;h=80548d9b44f791ef573a677988ac215e8ecffec7;hb=952de6648abd3d7192f97f3335c016df365b3ae0;hp=3fae9f2cbc1e45b57a322a1ab8e15880cbf0767f;hpb=5a436c3339d4caf3af1175ed41fcaab75206a59c;p=util-vserver.git diff --git a/gentoo/util-vserver b/gentoo/util-vserver index 3fae9f2..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,45 +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} - source "$_LIB_FUNCTIONS" - source "$__PKGLIBDIR/vserver.functions" + . ${UTIL_VSERVER_VARS} + + ebegin "Creating directories for $PACKAGE_NAME" + create_dirs + eend $? - ebegin "Setting path to vshelper" + ebegin "Setting vshelper path to $_VSHELPER" set_helper eend $? ebegin "Loading default device map" - 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} - source "$_LIB_FUNCTIONS" - source "$__PKGLIBDIR/vserver.functions" + . ${UTIL_VSERVER_VARS} ebegin "Stopping all running guests" $_START_VSERVERS -j 1 --all --stop @@ -67,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