Provided by: kernel-doc-2.4.27_2.4.27-12_all bug


       blk_init_queue -  prepare a request queue for use with a block device


       void blk_init_queue (request_queue_t *q, request_fn_proc *rfn);


       q               The request_queue_t to be initialised

       rfn            The  function to be called to process requests that have
                   been placed on the queue.


       If  a  block  device  wishes  to  use  the  standard  request  handling
       procedures,  which sorts requests and coalesces adjacent requests, then
       it must call blk_init_queue.  The function  rfn  will  be  called  when
       there  are  requests  on  the  queue that need to be processed.  If the
       device supports plugging, then rfn may not be called  immediately  when
       requests  are  available  on  the queue, but may be called at some time
       later instead.  Plugged queues are generally unplugged  when  a  buffer
       belonging  to  one  of  the  requests on the queue is needed, or due to
       memory pressure.

       rfn is not required, or even expected, to remove all requests  off  the
       queue,  but  only as many as it can handle at a time.  If it does leave
       requests on the  queue,  it  is  responsible  for  arranging  that  the
       requests get dealt with eventually.

       A global spin lock $io_request_lock must be held while manipulating the
       requests on the request queue.

       The request on the head of the  queue  is  by  default  assumed  to  be
       potentially active, and it is not considered for re-ordering or merging
       whenever the given queue is unplugged. This behaviour  can  be  changed
       with blk_queue_headactive.


       blk_init_queue  must  be  paired with a blk_cleanup_queue call when the
       block device is deactivated (such as at module unload).