
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
