Commit 1b59d3cb authored by Jens Axboe's avatar Jens Axboe

[PATCH] make deadline_merge prefetch next entry

Make deadline_merge() prefetch the next entry on the list.
parent 88591b7f
...@@ -118,6 +118,8 @@ deadline_find_hash(struct deadline_data *dd, sector_t offset) ...@@ -118,6 +118,8 @@ deadline_find_hash(struct deadline_data *dd, sector_t offset)
while ((entry = next) != hash_list) { while ((entry = next) != hash_list) {
next = entry->next; next = entry->next;
prefetch(next);
drq = list_entry_hash(entry); drq = list_entry_hash(entry);
BUG_ON(!drq->hash_valid_count); BUG_ON(!drq->hash_valid_count);
...@@ -191,6 +193,8 @@ deadline_merge(request_queue_t *q, struct list_head **insert, struct bio *bio) ...@@ -191,6 +193,8 @@ deadline_merge(request_queue_t *q, struct list_head **insert, struct bio *bio)
while ((entry = entry->prev) != sort_list) { while ((entry = entry->prev) != sort_list) {
__rq = list_entry_rq(entry); __rq = list_entry_rq(entry);
prefetch(entry->prev);
BUG_ON(__rq->flags & REQ_STARTED); BUG_ON(__rq->flags & REQ_STARTED);
if (!(__rq->flags & REQ_CMD)) if (!(__rq->flags & REQ_CMD))
...@@ -298,6 +302,8 @@ static void deadline_move_requests(struct deadline_data *dd, struct request *rq) ...@@ -298,6 +302,8 @@ static void deadline_move_requests(struct deadline_data *dd, struct request *rq)
struct list_head *nxt = rq->queuelist.next; struct list_head *nxt = rq->queuelist.next;
int this_rq_cost; int this_rq_cost;
prefetch(nxt);
/* /*
* take it off the sort and fifo list, move * take it off the sort and fifo list, move
* to dispatch queue * to dispatch queue
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment