X-Git-Url: http://git.linux-vserver.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=scripts%2Fvserver-init.functions;h=fef3c820446eedf87a6f9d58f22652db728fdf66;hb=3a626a7f2cd15bca6a66d012f622a9c00c9fb5e0;hp=69dd3680784bab99a2dc190e89821b5c31686eef;hpb=aad788fbe2be537ceb4c5285fc9a2d44fe27f2c1;p=util-vserver.git diff --git a/scripts/vserver-init.functions b/scripts/vserver-init.functions index 69dd368..fef3c82 100755 --- a/scripts/vserver-init.functions +++ b/scripts/vserver-init.functions @@ -48,3 +48,70 @@ function _endResult() _postResult return $rc } + +function set_helper() +{ + local f="/proc/sys/kernel/vshelper" + if test -e "$f"; then + echo "$_VSHELPER" > "$f" + return 0 + else + return 2 + fi +} + +function 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 +} + +function 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" + if test -n "$CGROUP_MNT_PER_SS"; then + for ss in "${CGROUP_SUBSYS[@]}"; do + $_MKDIR -p "$CGROUP_MNT/$ss" + $_GREP -q "$CGROUP_MNT/$ss" /proc/mounts || \ + $_MOUNT -t cgroup -o "$ss" vserver "$CGROUP_MNT/$ss" + done + else + oIFS="$IFS" + IFS=, + ss="${CGROUP_SUBSYS[*]}" + IFS="$oIFS" + $_MOUNT -t cgroup -o "$ss" vserver "$CGROUP_MNT" + fi +} + +function umount_cgroup() +{ + _generateCgroupOptions + test -n "$CGROUP_MNT" || return 0 + if test -n "$CGROUP_MNT_PER_SS"; then + for ss in "${CGROUP_SUBSYS[@]}"; do + $_UMOUNT "$CGROUP_MNT/$ss" + done + else + $_UMOUNT "$CGROUP_MNT" + fi +}