#! /bin/bash # Copyright (C) 2004 Enrico Scholz # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; version 2 of the License. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. if test -e /etc/init.d/functions; then . /etc/init.d/functions _beginResult() { echo -n "$@..."; } _postResult() { echo; } lockfile=/var/lock/subsys/$LOCKFILE elif test -e /etc/gentoo-release; then . /etc/init.d/functions.sh _beginResult() { ebegin "$@"; } _postResult() { :; } success() { eend 0; } passed() { eend 0; } failure() { eend 1; } lockfile=/var/run/$LOCKFILE else _beginResult() { echo -n "$@..."; } _postResult() { :; } success() { echo .; } passed() { echo .; } failure() { echo ERROR; } lockfile=/var/run/$LOCKFILE fi function _endResult() { local rc=$1 case "$rc" in (0) success;; (2) passed; rc=0;; (*) failure;; esac _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 }