struct request documentation

Jens Axboe <jens.axboe@oracle.com> 27/05/02

Short explanation of request members

Classification flags:

Ddriver member
Bblock layer member
II/O scheduler member

Unless an entry contains a D classification, a device driver must not accessthis member. Some members may contain D classifications, but should only beaccess through certain macros or functions (eg ->flags).

<linux/blkdev.h>

MemberFlagComment
struct list_head queuelistBIOrganization on various internalqueues
void*elevator_privateII/O scheduler private data
unsigned char cmd[16]DDriver can use this for setting upa cdb before execution, seeblk_queue_prep_rq
unsigned long flagsDBIContains info about data direction,request type, etc.
int rq_statusDRequest status bits
kdev_t rq_devDBITarget device
int errorsDBError counts
sector_t sectorDBITarget location
unsigned long hard_nr_sectorsBUsed to keep sector sane
unsigned long nr_sectorsDBITotal number of sectors in request
unsigned long hard_nr_sectorsBUsed to keep nr_sectors sane
unsigned short nr_phys_segmentsDBNumber of physical scatter gathersegments in a request
unsigned short nr_hw_segmentsDBNumber of hardware scatter gathersegments in a request
unsigned int current_nr_sectorsDBNumber of sectors in first segmentof request
unsigned int hard_cur_sectorsBUsed to keep current_nr_sectors sane
int tagDBTCQ tag, if assigned
void*specialDFree to be used by driver
char*bufferDMap of first segment, also seesection on bouncing SECTION
structcompletion*waitingDCan be used by driver to get signalledon request completion
structbio*bioDBIFirst bio in request
structbio*biotailDBILast bio in request
structrequest_queue*qDBRequest queue this request belongs to
structrequest_list*rlBRequest list this request came from