summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJens Axboe <axboe@suse.de>2002-10-27 16:49:31 -0800
committerJens Axboe <axboe@suse.de>2002-10-27 16:49:31 -0800
commit1b59d3cb089a2d3bb25ce1a2354bd1a0f794e8c5 (patch)
treeba9d9d1e879253d171b5ace1ab919fad44561b39
parent88591b7fc8f03d2e43fb9e2783fd271303813f1a (diff)
[PATCH] make deadline_merge prefetch next entry
Make deadline_merge() prefetch the next entry on the list.
-rw-r--r--drivers/block/deadline-iosched.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/block/deadline-iosched.c b/drivers/block/deadline-iosched.c
index cdd73931df6d..c104ed722da3 100644
--- a/drivers/block/deadline-iosched.c
+++ b/drivers/block/deadline-iosched.c
@@ -118,6 +118,8 @@ deadline_find_hash(struct deadline_data *dd, sector_t offset)
while ((entry = next) != hash_list) {
next = entry->next;
+ prefetch(next);
+
drq = list_entry_hash(entry);
BUG_ON(!drq->hash_valid_count);
@@ -191,6 +193,8 @@ deadline_merge(request_queue_t *q, struct list_head **insert, struct bio *bio)
while ((entry = entry->prev) != sort_list) {
__rq = list_entry_rq(entry);
+ prefetch(entry->prev);
+
BUG_ON(__rq->flags & REQ_STARTED);
if (!(__rq->flags & REQ_CMD))
@@ -298,6 +302,8 @@ static void deadline_move_requests(struct deadline_data *dd, struct request *rq)
struct list_head *nxt = rq->queuelist.next;
int this_rq_cost;
+ prefetch(nxt);
+
/*
* take it off the sort and fifo list, move
* to dispatch queue