Provided by: linux-doc-2.6.15_2.6.15-23.39_all bug

NAME

       blk_insert_request - insert a special request in to a request queue

SYNOPSIS

       void blk_insert_request  (request_queue_t * q, struct request * rq,
                                  int at_head, void * data);

ARGUMENTS

       q      request queue where request should be inserted

       rq     request to be inserted

       at_head
              insert request at head or tail of queue

       data   private data

DESCRIPTION

       Many block devices need to execute  commands  asynchronously,  so  they
       don’t  block the whole kernel from preemption during request execution.
       This is accomplished normally by inserting aritficial  requests  tagged
       as  REQ_SPECIAL in to the corresponding request queue, and letting them
       be scheduled for actual execution by the request queue.

       We have the option of inserting the head or  the  tail  of  the  queue.
       Typically  we use the tail for new ioctls and so forth. We use the head
       of the queue for things like a QUEUE_FULL message from a device,  or  a
       host that is unable to accept a particular command.