Close open file descriptors
[util-vserver.git] / scripts / vserver.start
index 25b4767..0f36642 100644 (file)
@@ -60,6 +60,7 @@ Failed to start vserver '$VSERVER_NAME'"
     test -n "$OPTION_DEBUG"    || exec 2>/dev/null >/dev/null
     test -z "$is_mounted"      || umountVserver     "$VSERVER_DIR" || :
     test -z "$have_interfaces" || disableInterfaces "$VSERVER_DIR" || :
+    test -z "$have_cgroup"     || destroyCgroup     "$VSERVER_DIR" || :
 
     unlock || :
 }
@@ -72,6 +73,7 @@ is_vshelper_init=
 have_interfaces=
 startsync_pipe=
 have_initcmd=
+have_cgroup=
 
 while test "$#" -gt 0; do
     case "$1" in
@@ -121,6 +123,7 @@ enableInterfaces "$VSERVER_DIR" && have_interfaces=1
 mountVserver     "$VSERVER_DIR" && is_mounted=1
 prepareInit      "$VSERVER_DIR"
 addtoCPUSET      "$VSERVER_DIR"
+attachToCgroup   "$VSERVER_DIR" && have_cgroup=1
 
 handleDeviceMap --set "$S_CONTEXT" "$VSERVER_DIR/apps/vdevmap"
 
@@ -133,7 +136,9 @@ test -z "$OPTION_DEFAULTTTY" || setDefaultTTY "$VSERVER_DIR"
 pushd "$VSERVER_DIR"/vdir/ >/dev/null
 is_configured=1
 if $_VSERVER_INFO - FEATURE migrate; then
+    ${IONICE_CMD[@]} \
     ${NICE_CMD[@]} \
+    "${VSPACE_SHARED_CMD[@]}" \
     "${CHBIND_CMD[@]}" \
     $_EXEC_ULIMIT "$VSERVER_DIR"/ulimits \
     $_VTAG       --create "${OPTS_VTAG_CREATE[@]}" --silent -- \
@@ -141,8 +146,8 @@ if $_VSERVER_INFO - FEATURE migrate; then
     $_VCONTEXT   --create "${OPTS_VCONTEXT_CREATE[@]}" -- \
     ${OPTION_STRACE:+$_STRACE -fF -o /tmp/vserver-start.$$} \
     ${USE_VNAMESPACE:+$_VNAMESPACE --set -- } \
-    $_VSPACE     --set "${OPTS_VSPACE[@]}" -- \
-    $_EXEC_REMOUNT -- \
+    $_VSPACE     --set "${OPTS_VSPACE[@]}" "${OPTS_VSPACE_SHARED[@]}" -- \
+    $_EXEC_REMOUNT /proc /sys -- \
     $_VLIMIT     --dir "$VSERVER_DIR"/rlimits --missingok -- \
     $_VSCHED     --xid self --force "${OPTS_VSCHED[@]}" -- \
     $_VSYSCTL    --xid self --dir "$VSERVER_DIR"/sysctl --missingok -- \
@@ -153,7 +158,7 @@ if $_VSERVER_INFO - FEATURE migrate; then
     $_VATTRIBUTE --set "${OPTS_VATTRIBUTE[@]}" -- \
     $_SAVE_CTXINFO "$VSERVER_DIR" \
     $_ENV -i "${OPTS_ENV[@]}" \
-    $_VCONTEXT   --migrate-self --endsetup --chroot $SILENT_OPT \
+    $_VCONTEXT   --migrate-self --endsetup $OPT_VCONTEXT_CHROOT $OPT_VCONTEXT_CLOSE_FD $SILENT_OPT \
     "${OPTS_VCONTEXT_MIGRATE[@]}" "${OPTS_VCONTEXT_ENTER[@]}" -- \
     "${INITCMD_START[@]}"
 else
@@ -163,6 +168,7 @@ else
        $_MKFIFO -m600 "$startsync_pipe"        ## safe, since mkfifo does not follow symlinks
     fi
     
+    ${IONICE_CMD[@]} \
     ${NICE_CMD[@]} \
     "${CHBIND_CMD[@]}" \
     $_EXEC_ULIMIT      "$VSERVER_DIR/ulimits" \