summaryrefslogtreecommitdiff
path: root/drivers/block
diff options
context:
space:
mode:
authorTejun Heo <htejun@gmail.com>2005-10-29 18:18:42 +0900
committerLinus Torvalds <torvalds@g5.osdl.org>2005-10-29 10:28:13 -0700
commit47e627ce83b6df9f4bb8e4b0a4dde1c5d7a4c929 (patch)
treee41ee81ad1c584fd93184cf43acbcbd986ad858d /drivers/block
parentfc228a04a4c01bbb2f898e180a14f9a976001f79 (diff)
[PATCH] blk: fix merge bug in as-iosched
as-iosched deals with aliased requests differently from other ioscheds. It links together aliased requests using rq->queuelist instead of spilling alises to dispatch queue like other ioscheds do. Requests linked in this way cannot be merged. Unfortunately, generic q->last_merge handling patch didn't take this into account and q->last_merge could be set to an aliased request resulting in Badness, corrupt list and eventually panic. This explicitly marks aliased requests to be unmergeable. Signed-off-by: Tejun Heo <htejun@gmail.com> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'drivers/block')
-rw-r--r--drivers/block/as-iosched.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/block/as-iosched.c b/drivers/block/as-iosched.c
index 4081c36c8c19..564172234819 100644
--- a/drivers/block/as-iosched.c
+++ b/drivers/block/as-iosched.c
@@ -1344,6 +1344,7 @@ as_add_aliased_request(struct as_data *ad, struct as_rq *arq, struct as_rq *alia
* Don't want to have to handle merges.
*/
as_del_arq_hash(arq);
+ arq->request->flags |= REQ_NOMERGE;
}
/*