[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>
diff --git a/drivers/block/as-iosched.c b/drivers/block/as-iosched.c
index 4081c36..5641722 100644
--- a/drivers/block/as-iosched.c
+++ b/drivers/block/as-iosched.c
@@ -1344,6 +1344,7 @@
* Don't want to have to handle merges.
*/
as_del_arq_hash(arq);
+ arq->request->flags |= REQ_NOMERGE;
}
/*