---
name: "__generic_make_request"
section: "9"
platform: "linux"
package: "linux-manual-2.6.32"
version: "2.6.32-48squeeze6"
release: "Debian 6.0 (Squeeze)"
platforms: ["linux"]
url: "https://new.carta.tech/__generic_make_request"
---

# \_\_generic\_make\_request(9)

hand a buffer to its device driver for I/O

## NAME

\_\_generic\_make\_request - hand a buffer to its device driver for I/O

## SYNOPSIS

**void \_\_generic\_make\_request(struct bio \*** *bio***);**

## ARGUMENTS

*bio*

The bio 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 bio, which describes the I/O that needs to be done.

**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 bio-\>bi\_end\_io function described (one day) else where.

The caller of generic\_make\_request must make sure that bi\_io\_vec are set to describe the memory buffer, and that bi\_dev and bi\_sector are set to describe the device address, and the bi\_end\_io and optionally bi\_private are set to describe how completion notification should be signaled.

generic\_make\_request and the drivers it calls may use bi\_next if this bio happens to be merged with someone else, and may change bi\_dev and bi\_sector for remaps as it sees fit. So the values of these fields should NOT be depended on after the call to generic\_make\_request.

## COPYRIGHT
