From Jens. drivers/block/deadline-iosched.c | 11 ++++++++++- 1 files changed, 10 insertions(+), 1 deletion(-) diff -puN drivers/block/deadline-iosched.c~deadline-hash-removal-fix drivers/block/deadline-iosched.c --- 25/drivers/block/deadline-iosched.c~deadline-hash-removal-fix 2003-05-28 03:10:35.000000000 -0700 +++ 25-akpm/drivers/block/deadline-iosched.c 2003-05-28 03:10:35.000000000 -0700 @@ -121,6 +121,15 @@ static inline void deadline_del_drq_hash __deadline_del_drq_hash(drq); } +static void +deadline_remove_merge_hints(request_queue_t *q, struct deadline_rq *drq) +{ + deadline_del_drq_hash(drq); + + if (q->last_merge == &drq->request->queuelist) + q->last_merge = NULL; +} + static inline void deadline_add_drq_hash(struct deadline_data *dd, struct deadline_rq *drq) { @@ -310,7 +319,7 @@ static void deadline_remove_request(requ struct deadline_data *dd = q->elevator.elevator_data; list_del_init(&drq->fifo); - deadline_del_drq_hash(drq); + deadline_remove_merge_hints(q, drq); deadline_del_drq_rb(dd, drq); } } _