diff options
author | Vasily Tarasov <vtaras@openvz.org> | 2007-07-20 10:06:38 +0200 |
---|---|---|
committer | Jens Axboe <jens.axboe@oracle.com> | 2007-07-20 10:06:38 +0200 |
commit | c2dea2d1fdbce86942dba0a968c523d8b7858bb5 (patch) | |
tree | c876b93785ee3b25c341be0dd5080a5176f27736 /include/linux | |
parent | 9a79b2274186fade17134929d4f85b70d59a3840 (diff) | |
download | op-kernel-dev-c2dea2d1fdbce86942dba0a968c523d8b7858bb5.zip op-kernel-dev-c2dea2d1fdbce86942dba0a968c523d8b7858bb5.tar.gz |
cfq: async queue allocation per priority
If we have two processes with different ioprio_class, but the same
ioprio_data, their async requests will fall into the same queue. I guess
such behavior is not expected, because it's not right to put real-time
requests and best-effort requests in the same queue.
The attached patch fixes the problem by introducing additional *cfqq
fields on cfqd, pointing to per-(class,priority) async queues.
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
Diffstat (limited to 'include/linux')
-rw-r--r-- | include/linux/ioprio.h | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/include/linux/ioprio.h b/include/linux/ioprio.h index 2eaa142..baf2938 100644 --- a/include/linux/ioprio.h +++ b/include/linux/ioprio.h @@ -53,6 +53,14 @@ static inline int task_ioprio(struct task_struct *task) return IOPRIO_NORM; } +static inline int task_ioprio_class(struct task_struct *task) +{ + if (ioprio_valid(task->ioprio)) + return IOPRIO_PRIO_CLASS(task->ioprio); + + return IOPRIO_CLASS_BE; +} + static inline int task_nice_ioprio(struct task_struct *task) { return (task_nice(task) + 20) / 5; |