struct request documentation¶
Jens Axboe <jens.axboe@oracle.com> 27/05/02
Short explanation of request members¶
Classification flags:
D driver member B block layer member I I/O scheduler member
Unless an entry contains a D classification, a device driver must not access this member. Some members may contain D classifications, but should only be access through certain macros or functions (eg ->flags).
<linux/blkdev.h>
Member | Flag | Comment |
---|---|---|
struct list_head queuelist | BI | Organization on various internal queues |
void *elevator_private |
I | I/O scheduler private data |
unsigned char cmd[16] | D | Driver can use this for setting up a cdb before execution, see blk_queue_prep_rq |
unsigned long flags | DBI | Contains info about data direction, request type, etc. |
int rq_status | D | Request status bits |
kdev_t rq_dev | DBI | Target device |
int errors | DB | Error counts |
sector_t sector | DBI | Target location |
unsigned long hard_nr_sectors | B | Used to keep sector sane |
unsigned long nr_sectors | DBI | Total number of sectors in request |
unsigned long hard_nr_sectors | B | Used to keep nr_sectors sane |
unsigned short nr_phys_segments | DB | Number of physical scatter gather segments in a request |
unsigned short nr_hw_segments | DB | Number of hardware scatter gather segments in a request |
unsigned int current_nr_sectors | DB | Number of sectors in first segment of request |
unsigned int hard_cur_sectors | B | Used to keep current_nr_sectors sane |
int tag | DB | TCQ tag, if assigned |
void *special |
D | Free to be used by driver |
char *buffer |
D | Map of first segment, also see section on bouncing SECTION |
struct completion *waiting |
D | Can be used by driver to get signalled on request completion |
struct bio *bio |
DBI | First bio in request |
struct bio *biotail |
DBI | Last bio in request |
struct request_queue *q |
DB | Request queue this request belongs to |
struct request_list *rl |
B | Request list this request came from |