Commit 47e627ce authored by Tejun Heo's avatar Tejun Heo Committed by Linus Torvalds

[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: default avatarTejun Heo <htejun@gmail.com>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent fc228a04
...@@ -1344,6 +1344,7 @@ as_add_aliased_request(struct as_data *ad, struct as_rq *arq, struct as_rq *alia ...@@ -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. * Don't want to have to handle merges.
*/ */
as_del_arq_hash(arq); as_del_arq_hash(arq);
arq->request->flags |= REQ_NOMERGE;
} }
/* /*
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment