[PATCH] blk: fix merge bug in as-iosched
authorTejun Heo <htejun@gmail.com>
Sat, 29 Oct 2005 09:18:42 +0000 (18:18 +0900)
committerLinus Torvalds <torvalds@g5.osdl.org>
Sat, 29 Oct 2005 17:28:13 +0000 (10:28 -0700)
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>
drivers/block/as-iosched.c

index 4081c36c8c19eb6f95ba2bdb5e46990d5a7c3730..56417223481946ca499c8305da27ef065485068f 100644 (file)
@@ -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;
 }
 
 /*