summaryrefslogtreecommitdiff
path: root/block
diff options
context:
space:
mode:
authorAaron Carroll <aaronc@gelato.unsw.edu.au>2007-12-05 10:07:07 (GMT)
committerJens Axboe <jens.axboe@oracle.com>2007-12-18 07:29:28 (GMT)
commit49565124b13bb16607e7f8fc8fb1d9c5c355a1a3 (patch)
tree47629c0533b9292f51cc9dc2f37d851e0913b727 /block
parent8896f3c039b0834ba695d154299b724ee5710b97 (diff)
downloadlinux-49565124b13bb16607e7f8fc8fb1d9c5c355a1a3.tar.xz
as-iosched: fix write batch start point
New write batches currently start from where the last one completed. We have no idea where the head is after switching batches, so this makes little sense. Instead, start the next batch from the request with the earliest deadline in the hope that we avoid a deadline expiry later on. Signed-off-by: Aaron Carroll <aaronc@gelato.unsw.edu.au> Acked-by: Nick Piggin <npiggin@suse.de> Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
Diffstat (limited to 'block')
-rw-r--r--block/as-iosched.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/block/as-iosched.c b/block/as-iosched.c
index 4513fc5..555cd6b 100644
--- a/block/as-iosched.c
+++ b/block/as-iosched.c
@@ -1097,7 +1097,8 @@ dispatch_writes:
ad->batch_data_dir = REQ_ASYNC;
ad->current_write_count = ad->write_batch_count;
ad->write_batch_idled = 0;
- rq = ad->next_rq[ad->batch_data_dir];
+ rq = rq_entry_fifo(ad->fifo_list[REQ_ASYNC].next);
+ ad->last_check_fifo[REQ_ASYNC] = jiffies;
goto dispatch_request;
}