--- a/drivers/block/as-iosched.c~ 2003-05-28 10:46:47.509897656 +0200 +++ a/drivers/block/as-iosched.c 2003-05-28 11:51:10.628614344 +0200 @@ -325,6 +325,14 @@ __as_del_arq_hash(arq); } +static void as_remove_merge_hints(request_queue_t *q, struct as_rq *arq) +{ + as_del_arq_hash(arq); + + if (q->last_merge == &arq->request->queuelist) + q->last_merge = NULL; +} + static void as_add_arq_hash(struct as_data *ad, struct as_rq *arq) { struct request *rq = arq->request; @@ -993,7 +1001,7 @@ ad->next_arq[data_dir] = as_find_next_arq(ad, arq); list_del_init(&arq->fifo); - as_del_arq_hash(arq); + as_remove_merge_hints(q, arq); as_del_arq_rb(ad, arq); }