
struct request documentation

Jens Axboe <axboe@suse.de> 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

request_queue_t *q		DB	Request queue this request belongs to

struct request_list *rl		B	Request list this request came from
