_pkgMountBindDir "$RPMETCDIR" /etc/rpm
test "$RPMLIBDIR" = "/" || _pkgMountBindDir "$RPMLIBDIR" /usr/lib/rpm
- "$_SECURE_MOUNT" --chroot "$VDIR" -n --secure --bind "$RPMSTATEDIR" "$_rpmdb_mntpoint"
+ pushd "$VDIR" >/dev/null
+
+ "$_SECURE_MOUNT" --chroot -n --bind "$RPMSTATEDIR" "$_rpmdb_mntpoint"
test -z "$WORKAROUND_106057" || mount -n --bind "$RPMSTATEDIR" "$_rpmdb_mntpoint"
test -e "$VDIR"/proc/self/status || \
- "$_SECURE_MOUNT" --chroot "$VDIR" -n --secure -t proc none /proc
+ "$_SECURE_MOUNT" --chroot -n -t proc none /proc
+
+ popd >/dev/null
}
function _pkgSetEnvBase
eval $1='( "${_tmp[@]}" )'
}
+## Usage: _getProcNumberCount <ctx> <var>
+function _getProcNumberCount
+{
+ local var=$2
+ local procnr_cnt=0
+
+ # Use /proc/virtual from kernel 2.6 when possible
+ if test -d "/proc/virtual"; then
+ set -- $($_GREP '^PROC:' "/proc/virtual/$1/limit" 2>/dev/null)
+ procnr_cnt=$2
+ else
+ procnr_cnt=$($_VPS ax | $_AWK '{print $2}' | $_GREP -x "$1" | $_WC -l )
+ fi
+
+ let procnr_cnt=procnr_cnt+0
+ eval $var=\$procnr_cnt
+}
+
## Usage: getVserverCtx <vdir> <result-varname> [<procnumber-varname> [<do-cleanup>]]
## Returns: 0 iff vserver is running
function getVserverStatus
eval "$2"=\$_ctx
test "$3" || return 0
- local _tmp=$($_VPS ax | $_AWK '{print $2}' | $_GREP -x "$_ctx" | $_WC -l )
- let _tmp=_tmp+0
+ local _tmp
+ _getProcNumberCount "$_ctx" _tmp
eval "$3"=\$_tmp
if test "$_tmp" = 0; then
## Usage: isCtxRunning <ctx>
function isCtxRunning
{
- local _tmp=$($_VPS ax | $_AWK '{print $2}' | $_GREP -x "$1" | $_WC -l )
+ local _tmp
+ _getProcNumberCount "$1" _tmp
test $_tmp -gt 0
}
local fifo="$tmpdir"/pipe
mkfifo -m700 "$fifo"
- vshelper.doInit "$VSERVER_DIR" sync "$fifo"
+ vshelper.doInit "$1" sync "$fifo"
eval $2=\$fifo
}