diff options
author | Tejun Heo <htejun@gmail.com> | 2005-10-29 05:18:42 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2005-10-29 13:28:13 -0400 |
commit | 47e627ce83b6df9f4bb8e4b0a4dde1c5d7a4c929 (patch) | |
tree | e41ee81ad1c584fd93184cf43acbcbd986ad858d /drivers/block/as-iosched.c | |
parent | fc228a04a4c01bbb2f898e180a14f9a976001f79 (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/as-iosched.c')
-rw-r--r-- | drivers/block/as-iosched.c | 1 |
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 | |||
1344 | * Don't want to have to handle merges. | 1344 | * Don't want to have to handle merges. |
1345 | */ | 1345 | */ |
1346 | as_del_arq_hash(arq); | 1346 | as_del_arq_hash(arq); |
1347 | arq->request->flags |= REQ_NOMERGE; | ||
1347 | } | 1348 | } |
1348 | 1349 | ||
1349 | /* | 1350 | /* |