vshost-util-vserver

Build script and sources for util-vserver.
git clone https://ccx.te2000.cz/git/vshost-util-vserver
Log | Files | Refs

vserver-init.functions (2964B)


      1 #! /bin/bash
      2 
      3 # Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
      4 #  
      5 # This program is free software; you can redistribute it and/or modify
      6 # it under the terms of the GNU General Public License as published by
      7 # the Free Software Foundation; version 2 of the License.
      8 #  
      9 # This program is distributed in the hope that it will be useful,
     10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
     11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     12 # GNU General Public License for more details.
     13 #  
     14 # You should have received a copy of the GNU General Public License
     15 # along with this program; if not, write to the Free Software
     16 # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
     17 
     18 if test -e /etc/init.d/functions; then
     19     . /etc/init.d/functions
     20     _beginResult() { echo -n "$@..."; }
     21     _postResult() { echo; }
     22     lockfile=/var/lock/subsys/$LOCKFILE
     23 elif test -e /etc/gentoo-release; then
     24     . /etc/init.d/functions.sh
     25     _beginResult() { ebegin "$@"; }
     26     _postResult() { :; }
     27     success() { eend 0; }
     28     passed()  { eend 0; }
     29     failure() { eend 1; }
     30     lockfile=/var/run/$LOCKFILE
     31 else
     32     _beginResult() { echo -n "$@..."; }
     33     _postResult() { :; }
     34     success() { echo .; }
     35     passed()  { echo .; }
     36     failure() { echo ERROR; }
     37     lockfile=/var/run/$LOCKFILE
     38 fi
     39 
     40 function _endResult()
     41 {
     42     local rc=$1
     43     case "$rc" in
     44 	(0)	success;;
     45 	(2)	passed; rc=0;;
     46 	(*)	failure;;
     47     esac
     48     _postResult
     49     return $rc
     50 }
     51 
     52 function set_helper()
     53 {
     54     local f="/proc/sys/kernel/vshelper"
     55     if test -e "$f"; then
     56 	echo "$_VSHELPER" > "$f"
     57 	return 0
     58     else
     59 	return 2
     60     fi
     61 }
     62 
     63 function kill_contexts()
     64 {
     65     local xid
     66     for xid in `ls -1 /proc/virtual 2>/dev/null`; do
     67 	[ "$xid" = "info" -o "$xid" = "status" ] && continue
     68 	$_VATTRIBUTE --xid $xid --set --flag ~persistent
     69 	$_VKILL --xid $xid -s 15
     70 	sleep 3
     71 	$_VKILL --xid $xid -s 9
     72     done
     73     local alive=0
     74     for xid in `ls -1 /proc/virtual 2>/dev/null`; do
     75 	[ "$xid" = "info" -o "$xid" = "status" ] && continue
     76 	let alive+=1
     77     done
     78     test $alive = 0
     79 }
     80 
     81 function create_dirs()
     82 {
     83     $_MKDIR -p "$__RUNDIR" && $_MKDIR -p "$__VSHELPERSTATEDIR" && $_MKDIR -p `$_READLINK "$__PKGSTATEREVDIR"`
     84 }
     85 
     86 function mount_cgroup()
     87 {
     88     _generateCgroupOptions
     89     test -n "$CGROUP_MNT" || return 0
     90     $_MKDIR -p "$CGROUP_MNT"
     91     if test -n "$CGROUP_MNT_PER_SS"; then
     92 	for ss in "${CGROUP_SUBSYS[@]}"; do
     93 	    $_MKDIR -p "$CGROUP_MNT/$ss"
     94 	    $_GREP -q "$CGROUP_MNT/$ss " /proc/mounts || \
     95 		$_MOUNT -t cgroup -o "$ss" vserver "$CGROUP_MNT/$ss"
     96 	done
     97     else
     98 	oIFS="$IFS"
     99 	IFS=,
    100 	ss="${CGROUP_SUBSYS[*]}"
    101 	IFS="$oIFS"
    102 	$_MOUNT -t cgroup -o "$ss" vserver "$CGROUP_MNT"
    103     fi
    104 }
    105 
    106 function umount_cgroup()
    107 {
    108     _generateCgroupOptions
    109     test -n "$CGROUP_MNT" || return 0
    110     if test -n "$CGROUP_MNT_PER_SS"; then
    111 	for ss in "${CGROUP_SUBSYS[@]}"; do
    112 	    $_UMOUNT "$CGROUP_MNT/$ss"
    113 	done
    114     else
    115 	$_UMOUNT "$CGROUP_MNT"
    116     fi
    117 }