---
name: "ll_rw_block"
section: "9"
platform: "linux"
package: "linux-manual-4.9"
version: "4.9.228-1"
release: "Debian 9 (Stretch)"
platforms: ["linux"]
url: "https://new.carta.tech/ll_rw_block"
---

# ll\_rw\_block(9)

level access to block devices (DEPRECATED)

## NAME

ll\_rw\_block - level access to block devices (DEPRECATED)

## SYNOPSIS

**void ll\_rw\_block(int** *op***, int** *op\_flags***, int** *nr***, struct buffer\_head \*** *bhs\[\]***);**

## ARGUMENTS

*op*

whether to **READ** or **WRITE**

*op\_flags*

rq\_flag\_bits

*nr*

number of struct buffer\_heads in the array

*bhs\[\]*

array of pointers to struct buffer\_head

## DESCRIPTION

**ll\_rw\_block** takes an array of pointers to struct buffer\_heads, and requests an I/O operation on them, either a **REQ\_OP\_READ** or a **REQ\_OP\_WRITE**. *op\_flags* contains flags modifying the detailed I/O behavior, most notably **REQ\_RAHEAD**.

This function drops any buffer that it cannot get a lock on (with the BH\_Lock state bit), any buffer that appears to be clean when doing a write request, and any buffer that appears to be up-to-date when doing read request. Further it marks as clean buffers that are processed for writing (the buffer cache won't assume that they are actually clean until the buffer gets unlocked).

ll\_rw\_block sets b\_end\_io to simple completion handler that marks the buffer up-to-date (if appropriate), unlocks the buffer and wakes any waiters.

All of the buffers must be for the same device, and must also be a multiple of the current approved size for the device.

## COPYRIGHT
