hc
2023-11-06 36f0949ef9854b82a9a3154d970da4e3b8d12a61
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
 
struct request documentation
 
Jens Axboe <jens.axboe@oracle.com> 27/05/02
 
1.0
Index
 
2.0 Struct request members classification
 
   2.1 struct request members explanation
 
3.0
 
 
2.0
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>
 
2.1
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