diff options
| author | Jens Axboe <axboe@suse.de> | 2002-10-27 16:49:31 -0800 |
|---|---|---|
| committer | Jens Axboe <axboe@suse.de> | 2002-10-27 16:49:31 -0800 |
| commit | 1b59d3cb089a2d3bb25ce1a2354bd1a0f794e8c5 (patch) | |
| tree | ba9d9d1e879253d171b5ace1ab919fad44561b39 | |
| parent | 88591b7fc8f03d2e43fb9e2783fd271303813f1a (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.c | 6 |
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 |
