Skip to content

Commit

Permalink
[PATCH] struct request: shrink and optimize some more
Browse files Browse the repository at this point in the history
Move some members around and unionize completion_data and rb_node since
they cannot ever be used at the same time.

Signed-off-by: Jens Axboe <axboe@suse.de>
  • Loading branch information
Jens Axboe authored and Jens Axboe committed Sep 30, 2006
1 parent 51da90f commit e6a1c87
Showing 1 changed file with 13 additions and 7 deletions.
20 changes: 13 additions & 7 deletions include/linux/blkdev.h
Original file line number Diff line number Diff line change
Expand Up @@ -211,6 +211,8 @@ struct request {
struct list_head queuelist;
struct list_head donelist;

request_queue_t *q;

unsigned int cmd_flags;
enum rq_cmd_type_bits cmd_type;

Expand All @@ -219,20 +221,28 @@ struct request {
*/

sector_t sector; /* next sector to submit */
sector_t hard_sector; /* next sector to complete */
unsigned long nr_sectors; /* no. of sectors left to submit */
unsigned long hard_nr_sectors; /* no. of sectors left to complete */
/* no. of sectors left to submit in the current segment */
unsigned int current_nr_sectors;

sector_t hard_sector; /* next sector to complete */
unsigned long hard_nr_sectors; /* no. of sectors left to complete */
/* no. of sectors left to complete in the current segment */
unsigned int hard_cur_sectors;

struct bio *bio;
struct bio *biotail;

struct hlist_node hash; /* merge hash */
struct rb_node rb_node; /* sort/lookup */
/*
* The rb_node is only used inside the io scheduler, requests
* are pruned when moved to the dispatch queue. So let the
* completion_data share space with the rb_node.
*/
union {
struct rb_node rb_node; /* sort/lookup */
void *completion_data;
};

/*
* two pointers are available for the IO schedulers, if they need
Expand All @@ -241,8 +251,6 @@ struct request {
void *elevator_private;
void *elevator_private2;

void *completion_data;

struct gendisk *rq_disk;
unsigned long start_time;

Expand All @@ -260,8 +268,6 @@ struct request {

unsigned short ioprio;

request_queue_t *q;

void *special;
char *buffer;

Expand Down

0 comments on commit e6a1c87

Please sign in to comment.