

Patch from Nick Piggin <piggin@cyberone.com.au>

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);

_
