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 |