Patch from Nick Piggin accounts _only_ reads in the history tracking. drivers/block/as-iosched.c | 12 ++++++++---- 1 files changed, 8 insertions(+), 4 deletions(-) diff -puN drivers/block/as-iosched.c~as-history-track-reads-only drivers/block/as-iosched.c --- 25/drivers/block/as-iosched.c~as-history-track-reads-only 2003-03-08 02:05:44.000000000 -0800 +++ 25-akpm/drivers/block/as-iosched.c 2003-03-08 02:05:44.000000000 -0800 @@ -526,9 +526,11 @@ static void as_complete_arq(struct as_da if (!arq->as_io_context) return; - set_bit(AS_TASK_IORUNNING, &arq->as_io_context->state); - set_bit(AS_REQ_FINISHED, &arq->as_io_context->state); - arq->as_io_context->last_end_request = jiffies; + if (rq_data_dir(arq->request) == READ) { + set_bit(AS_REQ_FINISHED, &arq->as_io_context->state); + set_bit(AS_TASK_IORUNNING, &arq->as_io_context->state); + arq->as_io_context->last_end_request = jiffies; + } if (ad->as_io_context == arq->as_io_context) { ad->antic_start = jiffies; @@ -556,7 +558,9 @@ static void as_add_request(struct as_dat if (arq->as_io_context) { atomic_inc(&arq->as_io_context->nr_queued); clear_bit(AS_REQ_FINISHED, &arq->as_io_context->state); - as_update_iohist(arq->as_io_context); + + if (data_dir == READ) + as_update_iohist(arq->as_io_context); } as_add_arq_rb(ad, arq); _