Merge ionice patch (originally from anonc, updated for newer util-vserver by cehteh).
authorDaniel Hokka Zakrisson <daniel@hozac.com>
Sun, 13 Jul 2008 17:51:18 +0000 (17:51 +0000)
committerDaniel Hokka Zakrisson <daniel@hozac.com>
Sun, 13 Jul 2008 17:51:18 +0000 (17:51 +0000)
git-svn-id: http://svn.linux-vserver.org/svn/util-vserver/trunk@2736 94cd875c-1c1d-0410-91d2-eb244daf1a30

configure.ac
lib/cflags-v13.c
lib/vserver.h
scripts/util-vserver-vars.pathsubst
scripts/vserver.functions
scripts/vserver.start
scripts/vserver.stop
scripts/vserver.suexec

index b187016..64ae0e9 100644 (file)
@@ -57,6 +57,7 @@ ENSC_PATHPROG(NOHUP,     nohup)
 ENSC_PATHPROG(RMMOD,     rmmod)
 ENSC_PATHPROG(VCONFIG,   vconfig,, [See http://www.candelatech.com/~greear/vlan.html; usually this tool is shipped in the 'vconfig' or 'vlan' package of your distribution])
 ENSC_PATHPROG(WGET,      wget)
+ENSC_PATHPROG(IONICE,    ionice)
 ENSC_PATHPROG(FILE,      file,    [file])
 ENSC_PATHPROG(GZIP,      gzip,    [gzip])
 ENSC_PATHPROG(BZIP2,     bzip2,   [bzip2])
index 2329ca0..6d29e83 100644 (file)
@@ -65,6 +65,7 @@ static struct Mapping_uint64 const VALUES[] = {
   DECL("fork_rss",     VC_VXF_FORK_RSS),
   DECL("prolific",     VC_VXF_PROLIFIC),
   DECL("igneg_nice",    VC_VXF_IGNEG_NICE),
+  DECL("igneg_ionice", VC_VXF_IGNEG_IONICE),
 
     // Some pseudo flags
   DECL("secure",        VC_VXF_HIDE_NETIF),
index 0d7664f..fa42afb 100644 (file)
 #define VC_VXF_PROLIFIC                        (1ULL<<49)
 
 #define VC_VXF_IGNEG_NICE              (1ULL<<52)
+#define VC_VXF_IGNEG_IONICE            (1ULL<<53)
 
 
 // the ccapabilities
index fc50a56..e2fe8f1 100644 (file)
@@ -153,6 +153,7 @@ _UMOUNT="@UMOUNT@"
 _VCONFIG="@VCONFIG@"
 _WC="@WC@"
 _WGET="@WGET@"
+_IONICE="@IONICE@"
 
 # https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=106057
 WORKAROUND_106057=1
index 0d02105..db64fec 100644 (file)
@@ -20,6 +20,7 @@
 #  $VSERVER_NAME  ... name of vserver
 
 declare -a NICE_CMD=()
+declare -a IONICE_CMD=()
 declare -a CHBIND_CMD=()
 declare -a CAP_OPTS=()
 declare -a CHCONTEXT_INIT_OPTS=()
@@ -135,6 +136,17 @@ function _generateNiceCommand
     NICE_CMD=( $_NICE -n $nice )
 }
 
+function _generateIONiceCommand
+{
+    local vdir=$1
+    local ionice_class=2
+    local ionice_priority=0
+
+    test -r "$vdir/ionice/class" && read ionice_class <"$vdir"/ionice/class
+    test -r "$vdir/ionice/priority" && read ionice_priority <"$vdir"/ionice/priority
+
+    IONICE_CMD=( $_IONICE -c$ionice_class -n$ionice_priority )
+}
 
 function _generatePersonalityOptions
 {
@@ -812,6 +824,7 @@ function generateOptions
     _generateInterfaceOptions   "$1"
     test -n "$_HAVE_CHBIND_OPTIONS" || _generateChbindOptions "$1" 
     _generateNiceCommand        "$1"
+    _generateIONiceCommand     "$1"
     _generateInitOptions        "$1"
     _generateChcontextOptions   "$1"
     _generateScheduleOptions    "$1"
index 25b4767..569c87e 100644 (file)
@@ -133,6 +133,7 @@ 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[@]} \
     "${CHBIND_CMD[@]}" \
     $_EXEC_ULIMIT "$VSERVER_DIR"/ulimits \
@@ -163,6 +164,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" \
index 07e189f..6c20260 100644 (file)
@@ -80,6 +80,7 @@ if test -n "$_IS_FAKEINIT" && \
        $_VKILL -s INT --xid "$S_CONTEXT" -- 1 || fail=1
     fi
 elif $_VSERVER_INFO - FEATURE migrate; then
+    "${IONICE_CMD[@]}" \
     "${NICE_CMD[@]}" \
     "${CHBIND_CMD[@]}" \
     "$_VSPACE" --enter "$S_CONTEXT" "${OPTS_VSPACE[@]}" -- \
@@ -87,8 +88,9 @@ elif $_VSERVER_INFO - FEATURE migrate; then
     $_VCONTEXT $SILENT_OPT --migrate --chroot --xid "$S_CONTEXT" -- \
     "${INITCMD_STOP[@]}" || fail=1
 else
+    "${IONICE_CMD[@]}" \
     "${NICE_CMD[@]}" \
-    "$_CHBIND"       "${CHBIND_OPTS[@]}" \
+    "${CHBIND_CMD[@]}" \
     "$_EXEC_ULIMIT"  "$VSERVER_DIR/ulimits" \
     $_CHCONTEXT_COMPAT    "${CHCONTEXT_OPTS[@]}" \
     "$_CAPCHROOT"    "${CAPCHROOT_OPTS[@]}" "." \
index 8114145..02aeef2 100644 (file)
@@ -34,6 +34,7 @@ test -z "$OPTION_NONAMESPACE" || USE_VNAMESPACE=
 if $_VSERVER_INFO - FEATURE migrate; then
     if test -z "$is_stopped"; then
        exec \
+       "${IONICE_CMD[@]}" \
        "${NICE_CMD[@]}" \
        "${CHBIND_CMD[@]}" \
        $_EXEC_ULIMIT "$VSERVER_DIR/ulimits" \
@@ -45,6 +46,7 @@ if $_VSERVER_INFO - FEATURE migrate; then
        "$@"
     else
        exec \
+       "${IONICE_CMD[@]}" \
        "${NICE_CMD[@]}" \
        "${CHBIND_CMD[@]}" \
        $_EXEC_ULIMIT "$VSERVER_DIR/ulimits" \
@@ -57,6 +59,7 @@ if $_VSERVER_INFO - FEATURE migrate; then
     fi
 else
     exec \
+    "${IONICE_CMD[@]}" \
     "${NICE_CMD[@]}" \
     "${CHBIND_CMD[@]}" \
     "$_EXEC_ULIMIT"  "$VSERVER_DIR/ulimits" \