exec-remount remounts proc and sys, to get the right namespaces associated with them.
[util-vserver.git] / scripts / vserver.functions
index c97c0c6..0d02105 100644 (file)
@@ -561,6 +561,7 @@ function _processSingleInterface
     local mac
     local extip
     local up="up"
+    local peer
 
     _getInterfaceValue ip     '' "$iface"
     _getInterfaceValue extip  '' "$iface" "$iface/.."
@@ -571,6 +572,7 @@ function _processSingleInterface
     _getInterfaceValue name   '' "$iface"
     _getInterfaceValue scope  '' "$iface" "$iface/.."
     _getInterfaceValue mac    '' "$iface"
+    _getInterfaceValue peer   '' "$iface"
 
     test -n "$ip" || { echo $"Can not read ip for '$iface'"  >&2; return 1; }
     test -n "$dev" -o -e "$iface"/nodev || {
@@ -613,7 +615,7 @@ function _processSingleInterface
                _addInterfaceCmd TUNCTL "$dev" $tun_info
            fi
 
-           _addInterfaceCmd IP_ADDR  "$ip${prefix:+/$prefix}" $use_bcast ${name:+label "$dev:$name"} dev "$dev"
+           _addInterfaceCmd IP_ADDR  "$ip${prefix:+/$prefix}" $use_bcast ${name:+label "$dev:$name"} dev "$dev" ${peer:+peer "$peer"}
            #_addInterfaceCmd IP_ROUTE "$ip${prefix:+/$prefix}" dev "$dev"
            _addInterfaceCmd IP_LINK  "$dev" $up
        elif ! test -n "$N_CONTEXT"; then
@@ -755,8 +757,9 @@ function _generateSpaceOptions
     local vdir="$1"
     local d="$vdir"/spaces
 
-    test ! -e "$d"/pid || \
-      OPTS_VSPACE=( "${OPTS_VSPACE[@]}" --pid )
+    ( test ! -e "$d"/pid &&
+      ! $_VSERVER_INFO PIDSPACE FEATURE ) || \
+       OPTS_VSPACE=( "${OPTS_VSPACE[@]}" --pid )
 
     test ! -e "$d"/net || {
        OPTS_VSPACE=( "${OPTS_VSPACE[@]}" --net )
@@ -1349,7 +1352,7 @@ function _namespaceCleanup
     done < /proc/mounts
     # separate loop to avoid races while reading /proc/mounts
     for i in "${list_umount[@]}"; do
-       $_UMOUNT -l -n "$i"
+       $_UMOUNT -l -n -i "$i"
     done
 }