generic_make_request

Section: Kernel Hacker's Manual (9)
Updated: generic_make_request
Index Return to Main Contents
 

NAME

generic_make_request -  

SYNOPSIS

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

ARGUMENTS

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.
 

DESCRIPTION

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.


 

Index

NAME
SYNOPSIS
ARGUMENTS
DESCRIPTION

This document was created by man2html, using the manual pages.
Time: 03:51:44 GMT, June 12, 2005