From: Con Kolivas <kernel@kolivas.org>
To: linux list <linux-kernel@vger.kernel.org>
Cc: ck list <ck@vds.kolivas.org>
Subject: [ckpatch][12/29] cfq-ioprio_inherit_rt_class.patch
Date: Sun, 18 Jun 2006 17:31:54 +1000 [thread overview]
Message-ID: <200606181731.54904.kernel@kolivas.org> (raw)
If a realtime task does not explicitly set an ioprio make it inherit the
realtime class and a priority dependant on its realtime priority.
Signed-off-by: Con Kolivas <kernel@kolivas.org>
---
block/cfq-iosched.c | 4 ++--
include/linux/ioprio.h | 13 ++++++++++++-
2 files changed, 14 insertions(+), 3 deletions(-)
Index: linux-ck-dev/block/cfq-iosched.c
===================================================================
--- linux-ck-dev.orig/block/cfq-iosched.c 2006-06-18 15:20:13.000000000 +1000
+++ linux-ck-dev/block/cfq-iosched.c 2006-06-18 15:23:53.000000000 +1000
@@ -1354,10 +1354,10 @@ static void cfq_init_prio_data(struct cf
printk(KERN_ERR "cfq: bad prio %x\n", ioprio_class);
case IOPRIO_CLASS_NONE:
/*
- * no prio set, place us in the middle of the BE classes
+ * Select class and ioprio according to policy and nice
*/
+ cfqq->ioprio_class = task_policy_ioprio_class(tsk);
cfqq->ioprio = task_nice_ioprio(tsk);
- cfqq->ioprio_class = IOPRIO_CLASS_BE;
break;
case IOPRIO_CLASS_RT:
cfqq->ioprio = task_ioprio(tsk);
Index: linux-ck-dev/include/linux/ioprio.h
===================================================================
--- linux-ck-dev.orig/include/linux/ioprio.h 2006-06-18 15:20:13.000000000 +1000
+++ linux-ck-dev/include/linux/ioprio.h 2006-06-18 15:23:53.000000000 +1000
@@ -22,7 +22,7 @@
* class, the default for any process. IDLE is the idle scheduling class, it
* is only served when no one else is using the disk.
*/
-enum {
+enum ioprio_class {
IOPRIO_CLASS_NONE,
IOPRIO_CLASS_RT,
IOPRIO_CLASS_BE,
@@ -51,8 +51,19 @@ static inline int task_ioprio(struct tas
return IOPRIO_PRIO_DATA(task->ioprio);
}
+static inline enum ioprio_class
+ task_policy_ioprio_class(struct task_struct *task)
+{
+ if (rt_task(task))
+ return IOPRIO_CLASS_RT;
+ return IOPRIO_CLASS_BE;
+}
+
static inline int task_nice_ioprio(struct task_struct *task)
{
+ if (rt_task(task))
+ return (MAX_RT_PRIO - task->rt_priority) * IOPRIO_BE_NR /
+ MAX_RT_PRIO;
return (task_nice(task) + 20) / 5;
}
--
-ck
reply other threads:[~2006-06-18 7:33 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=200606181731.54904.kernel@kolivas.org \
--to=kernel@kolivas.org \
--cc=ck@vds.kolivas.org \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.