diff options
author | Tejun Heo <htejun@gmail.com> | 2005-10-29 18:18:42 +0900 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2005-10-29 10:28:13 -0700 |
commit | 47e627ce83b6df9f4bb8e4b0a4dde1c5d7a4c929 (patch) | |
tree | e41ee81ad1c584fd93184cf43acbcbd986ad858d /drivers/block | |
parent | fc228a04a4c01bbb2f898e180a14f9a976001f79 (diff) | |
download | op-kernel-dev-47e627ce83b6df9f4bb8e4b0a4dde1c5d7a4c929.zip op-kernel-dev-47e627ce83b6df9f4bb8e4b0a4dde1c5d7a4c929.tar.gz |
[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')
-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 4081c36..5641722 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; } /* |