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