gentoo: use /var/run for new /run compatibility
[util-vserver.git] / scripts / vserver-init.functions
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 }