X-Git-Url: http://git.linux-vserver.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=gentoo%2Futil-vserver;h=1f46709a9cfa396de78cd8d5a8275aa4573cd900;hb=144b27fb9c6e9b7f06b988f05d69d3e0ad790ef9;hp=c7ff3595f81a131317b0d2094bd9224d526d99f9;hpb=94d6379ba442eac176300d37a194c4e9a65c0e1e;p=util-vserver.git diff --git a/gentoo/util-vserver b/gentoo/util-vserver index c7ff359..1f46709 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,11 +21,31 @@ 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"` +} + +function mount_cgroup() +{ + _generateCgroupOptions + test -n "$CGROUP_MNT" || return 0 + $_MKDIR -p "$CGROUP_MNT" + $_MOUNT -t cgroup -o "$CGROUP_SUBSYS" vserver "$CGROUP_MNT" +} + +function umount_cgroup() +{ + _generateCgroupOptions + test -n "$CGROUP_MNT" || return 0 + $_UMOUNT "$CGROUP_MNT" } start() { @@ -37,13 +58,24 @@ start() { . ${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() { @@ -63,6 +95,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