Merge tag 'devicetree-for-5.15' of git://git.kernel.org/pub/scm/linux/kernel/git...
[linux-2.6-microblaze.git] / Documentation / block / request.rst
1 ============================
2 struct request documentation
3 ============================
4
5 Jens Axboe <jens.axboe@oracle.com> 27/05/02
6
7
8 .. FIXME:
9    No idea about what does mean - seems just some noise, so comment it
10
11    1.0
12    Index
13
14    2.0 Struct request members classification
15
16        2.1 struct request members explanation
17
18    3.0
19
20
21    2.0
22
23
24
25 Short explanation of request members
26 ====================================
27
28 Classification flags:
29
30         =       ====================
31         D       driver member
32         B       block layer member
33         I       I/O scheduler member
34         =       ====================
35
36 Unless an entry contains a D classification, a device driver must not access
37 this member. Some members may contain D classifications, but should only be
38 access through certain macros or functions (eg ->flags).
39
40 <linux/blkdev.h>
41
42 =============================== ======= =======================================
43 Member                          Flag    Comment
44 =============================== ======= =======================================
45 struct list_head queuelist      BI      Organization on various internal
46                                         queues
47
48 ``void *elevator_private``      I       I/O scheduler private data
49
50 unsigned char cmd[16]           D       Driver can use this for setting up
51                                         a cdb before execution, see
52                                         blk_queue_prep_rq
53
54 unsigned long flags             DBI     Contains info about data direction,
55                                         request type, etc.
56
57 int rq_status                   D       Request status bits
58
59 kdev_t rq_dev                   DBI     Target device
60
61 int errors                      DB      Error counts
62
63 sector_t sector                 DBI     Target location
64
65 unsigned long hard_nr_sectors   B       Used to keep sector sane
66
67 unsigned long nr_sectors        DBI     Total number of sectors in request
68
69 unsigned long hard_nr_sectors   B       Used to keep nr_sectors sane
70
71 unsigned short nr_phys_segments DB      Number of physical scatter gather
72                                         segments in a request
73
74 unsigned short nr_hw_segments   DB      Number of hardware scatter gather
75                                         segments in a request
76
77 unsigned int current_nr_sectors DB      Number of sectors in first segment
78                                         of request
79
80 unsigned int hard_cur_sectors   B       Used to keep current_nr_sectors sane
81
82 int tag                         DB      TCQ tag, if assigned
83
84 ``void *special``               D       Free to be used by driver
85
86 ``char *buffer``                D       Map of first segment, also see
87                                         section on bouncing SECTION
88
89 ``struct completion *waiting``  D       Can be used by driver to get signalled
90                                         on request completion
91
92 ``struct bio *bio``             DBI     First bio in request
93
94 ``struct bio *biotail``         DBI     Last bio in request
95
96 ``struct request_queue *q``     DB      Request queue this request belongs to
97
98 ``struct request_list *rl``     B       Request list this request came from
99 =============================== ======= =======================================