From: Daniel Hokka Zakrisson Date: Sun, 13 Jul 2008 17:51:18 +0000 (+0000) Subject: Merge ionice patch (originally from anonc, updated for newer util-vserver by cehteh). X-Git-Url: http://git.linux-vserver.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=36171922c7107ef4fb2ed9101d0dca58a43b5615;p=util-vserver.git Merge ionice patch (originally from anonc, updated for newer util-vserver by cehteh). git-svn-id: http://svn.linux-vserver.org/svn/util-vserver/trunk@2736 94cd875c-1c1d-0410-91d2-eb244daf1a30 --- diff --git a/configure.ac b/configure.ac index b187016..64ae0e9 100644 --- a/configure.ac +++ b/configure.ac @@ -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]) diff --git a/lib/cflags-v13.c b/lib/cflags-v13.c index 2329ca0..6d29e83 100644 --- a/lib/cflags-v13.c +++ b/lib/cflags-v13.c @@ -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), diff --git a/lib/vserver.h b/lib/vserver.h index 0d7664f..fa42afb 100644 --- a/lib/vserver.h +++ b/lib/vserver.h @@ -195,6 +195,7 @@ #define VC_VXF_PROLIFIC (1ULL<<49) #define VC_VXF_IGNEG_NICE (1ULL<<52) +#define VC_VXF_IGNEG_IONICE (1ULL<<53) // the ccapabilities diff --git a/scripts/util-vserver-vars.pathsubst b/scripts/util-vserver-vars.pathsubst index fc50a56..e2fe8f1 100644 --- a/scripts/util-vserver-vars.pathsubst +++ b/scripts/util-vserver-vars.pathsubst @@ -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 diff --git a/scripts/vserver.functions b/scripts/vserver.functions index 0d02105..db64fec 100644 --- a/scripts/vserver.functions +++ b/scripts/vserver.functions @@ -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" diff --git a/scripts/vserver.start b/scripts/vserver.start index 25b4767..569c87e 100644 --- a/scripts/vserver.start +++ b/scripts/vserver.start @@ -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" \ diff --git a/scripts/vserver.stop b/scripts/vserver.stop index 07e189f..6c20260 100644 --- a/scripts/vserver.stop +++ b/scripts/vserver.stop @@ -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[@]}" "." \ diff --git a/scripts/vserver.suexec b/scripts/vserver.suexec index 8114145..02aeef2 100644 --- a/scripts/vserver.suexec +++ b/scripts/vserver.suexec @@ -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" \