request.rst 2.5 KB
Newer Older
1
============================
Linus Torvalds's avatar
Linus Torvalds committed
2
struct request documentation
3
============================
Linus Torvalds's avatar
Linus Torvalds committed
4

5
Jens Axboe <jens.axboe@oracle.com> 27/05/02
Linus Torvalds's avatar
Linus Torvalds committed
6 7


8 9 10 11 12 13 14 15 16
.. FIXME:
   No idea about what does mean - seems just some noise, so comment it

   1.0
   Index

   2.0 Struct request members classification

       2.1 struct request members explanation
Linus Torvalds's avatar
Linus Torvalds committed
17

18 19 20 21
   3.0


   2.0
Linus Torvalds's avatar
Linus Torvalds committed
22 23 24 25



Short explanation of request members
26
====================================
Linus Torvalds's avatar
Linus Torvalds committed
27 28 29

Classification flags:

30
	=	====================
Linus Torvalds's avatar
Linus Torvalds committed
31 32 33
	D	driver member
	B	block layer member
	I	I/O scheduler member
34
	=	====================
Linus Torvalds's avatar
Linus Torvalds committed
35 36 37 38 39 40 41

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>

42
=============================== ======= =======================================
Linus Torvalds's avatar
Linus Torvalds committed
43
Member				Flag	Comment
44
=============================== ======= =======================================
Linus Torvalds's avatar
Linus Torvalds committed
45 46 47
struct list_head queuelist	BI	Organization on various internal
					queues

48
``void *elevator_private``	I	I/O scheduler private data
Linus Torvalds's avatar
Linus Torvalds committed
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

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

84
``void *special``		D	Free to be used by driver
Linus Torvalds's avatar
Linus Torvalds committed
85

86
``char *buffer``		D	Map of first segment, also see
Linus Torvalds's avatar
Linus Torvalds committed
87 88
					section on bouncing SECTION

89
``struct completion *waiting``	D	Can be used by driver to get signalled
Linus Torvalds's avatar
Linus Torvalds committed
90 91
					on request completion

92
``struct bio *bio``		DBI	First bio in request
Linus Torvalds's avatar
Linus Torvalds committed
93

94
``struct bio *biotail``		DBI	Last bio in request
Linus Torvalds's avatar
Linus Torvalds committed
95

96
``struct request_queue *q``	DB	Request queue this request belongs to
Linus Torvalds's avatar
Linus Torvalds committed
97

98 99
``struct request_list *rl``	B	Request list this request came from
=============================== ======= =======================================