From: Tejun Heo Date: Sat, 29 Oct 2005 09:18:42 +0000 (+0900) Subject: [PATCH] blk: fix merge bug in as-iosched X-Git-Tag: v2.6.15-rc1~731^2~15 X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=47e627ce83b6df9f4bb8e4b0a4dde1c5d7a4c929;p=linux-2.6 [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 Signed-off-by: Linus Torvalds --- diff --git a/drivers/block/as-iosched.c b/drivers/block/as-iosched.c index 4081c36c8c..5641722348 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; } /*