summaryrefslogtreecommitdiffstats
path: root/block
diff options
context:
space:
mode:
authorAl Viro <viro@zeniv.linux.org.uk>2006-03-14 21:32:50 +0100
committerAl Viro <viro@zeniv.linux.org.uk>2006-03-19 00:33:54 +0100
commitb0a6916bcc48f46996d54b8451591a2f2b7b2f64 (patch)
tree8b22d7d04a802092928a642628d2ede339a5287a /block
parent[PATCH] fix locking in queue_requests_store() (diff)
downloadlinux-b0a6916bcc48f46996d54b8451591a2f2b7b2f64.tar.xz
linux-b0a6916bcc48f46996d54b8451591a2f2b7b2f64.zip
[PATCH] fix cfq hash lookups
If somebody does a hash lookup for cfq_queue while ioprio of an async queue is elevated, they shouldn't end up stuck with lowered ioprio when we go back. Fix is to use ->org_ioprio{,class} in hash lookups. Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'block')
-rw-r--r--block/cfq-iosched.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/block/cfq-iosched.c b/block/cfq-iosched.c
index c8dbe38c81c8..37a2a772498c 100644
--- a/block/cfq-iosched.c
+++ b/block/cfq-iosched.c
@@ -1179,7 +1179,7 @@ __cfq_find_cfq_hash(struct cfq_data *cfqd, unsigned int key, unsigned int prio,
hlist_for_each_safe(entry, next, hash_list) {
struct cfq_queue *__cfqq = list_entry_qhash(entry);
- const unsigned short __p = IOPRIO_PRIO_VALUE(__cfqq->ioprio_class, __cfqq->ioprio);
+ const unsigned short __p = IOPRIO_PRIO_VALUE(__cfqq->org_ioprio_class, __cfqq->org_ioprio);
if (__cfqq->key == key && (__p == prio || prio == CFQ_KEY_ANY))
return __cfqq;