\subsection*{request}
\ds{request} data structures are used to make requests to the block devices in the
system.
The requests are always to read or write blocks of data to or from the buffer cache.
\SeeModule{include/linux/\\blkdev.h}
\begin{tscreen}\begin{verbatim}
struct request {
    volatile int rq_status;    
#define RQ_INACTIVE            (-1)
#define RQ_ACTIVE              1
#define RQ_SCSI_BUSY           0xffff
#define RQ_SCSI_DONE           0xfffe
#define RQ_SCSI_DISCONNECTING  0xffe0

    kdev_t rq_dev;
    int cmd;        /* READ or WRITE */
    int errors;
    unsigned long sector;
    unsigned long nr_sectors;
    unsigned long current_nr_sectors;
    char * buffer;
    struct semaphore * sem;
    struct buffer_head * bh;
    struct buffer_head * bhtail;
    struct request * next;
};
\end{verbatim}\end{tscreen}
