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


       generic_make_request -


       void generic_make_request (int rw, struct buffer_head *bh);


       rw            READ, WRITE, or READA - what sort of I/O is desired.

       bh             The buffer head describing the location in memory and on
                   the device.


       generic_make_request is used to make I/O requests of block devices.  It
       is  passed  a  struct  buffer_head  and a rw value.  The READ and WRITE
       options are (hopefully) obvious in meaning.  The READA value means that
       a read is required, but that the driver is free to fail the request if,
       for example, it cannot get needed resources immediately.

       generic_make_request does not return any status.   The  success/failure
       status  of  the  request,  along  with  notification  of completion, is
       delivered asynchronously through the bh->b_end_io function described
       (one day) else where.

       The  caller of generic_make_request must make sure that b_page, b_addr,
       b_size are set to describe the memory buffer, that b_rdev and b_rsector
       are set to describe the device address, and the b_end_io and optionally
       b_private are set to describe how  completion  notification  should  be
       signaled.   BH_Mapped  should  also  be  set (to confirm that b_dev and
       b_blocknr are valid).

       generic_make_request and the drivers it calls may  use  b_reqnext,  and
       may  change b_rdev and b_rsector.  So the values of these fields should
       NOT be depended on after the call to generic_make_request.  Because  of
       this,  the caller should record the device address information in b_dev
       and b_blocknr.

       Apart from those fields  mentioned  above,  no  other  fields,  and  in
       particular,  no other flags, are changed by generic_make_request or any
       lower level drivers.