diff options
| -rw-r--r-- | drivers/block/deadline-iosched.c | 5 | ||||
| -rw-r--r-- | include/linux/blkdev.h | 41 |
2 files changed, 25 insertions, 21 deletions
diff --git a/drivers/block/deadline-iosched.c b/drivers/block/deadline-iosched.c index c104ed722da3..585147ac810b 100644 --- a/drivers/block/deadline-iosched.c +++ b/drivers/block/deadline-iosched.c @@ -118,7 +118,6 @@ 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); @@ -193,8 +192,6 @@ 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)) @@ -302,8 +299,6 @@ 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 diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h index cb3b342d4163..212e53167f88 100644 --- a/include/linux/blkdev.h +++ b/include/linux/blkdev.h @@ -22,30 +22,35 @@ struct request_list { wait_queue_head_t wait; }; +/* + * try to put the fields that are referenced together in the same cacheline + */ struct request { struct list_head queuelist; /* looking for ->queue? you must _not_ * access it directly, use * blkdev_dequeue_request! */ - int ref_count; - - void *elevator_private; + unsigned long flags; /* see REQ_ bits below */ - unsigned char cmd[16]; + kdev_t rq_dev; + sector_t sector; + unsigned long nr_sectors; + unsigned int current_nr_sectors; - unsigned long flags; /* see REQ_ bits below */ + void *elevator_private; int rq_status; /* should split this into a few status bits */ - kdev_t rq_dev; struct gendisk *rq_disk; int errors; - sector_t sector; unsigned long start_time; - unsigned long nr_sectors; sector_t hard_sector; /* the hard_* are block layer * internals, no driver should * touch them */ unsigned long hard_nr_sectors; + unsigned int hard_cur_sectors; + + struct bio *bio; + struct bio *biotail; /* Number of scatter-gather DMA addr+len pairs after * physical address coalescing is performed. @@ -59,13 +64,21 @@ struct request { */ unsigned short nr_hw_segments; - unsigned int current_nr_sectors; - unsigned int hard_cur_sectors; int tag; - void *special; char *buffer; - /* For packet commands */ + int ref_count; + request_queue_t *q; + struct request_list *rl; + + struct completion *waiting; + void *special; + + /* + * when request is used as a packet command carrier + */ + unsigned char cmd[16]; + unsigned int data_len; void *data; @@ -73,10 +86,6 @@ struct request { void *sense; unsigned int timeout; - struct completion *waiting; - struct bio *bio, *biotail; - request_queue_t *q; - struct request_list *rl; }; /* |
