May 6, 2008 GETIOBUF 9

### NAME

getiobuf, putiobuf - I/O descriptor allocation interface

### SYNOPSIS

```struct` `buf``*` getiobuf(```struct vnode *vp``, bool waitok`)
```void` putiobuf(```struct buf *bp`)

### DESCRIPTION

getiobuf(``) allocates a buf structure.

```vp`
  The vnode to which the allocated buffer will be associated. This can be ```NULL`.

```waitok`
  If true, ```getiobuf` can sleep until enough memory is available. Otherwise, it returns ```NULL` immediately if enough memory is not available.

Note that the allocated buffer doesn't belong to buffer cache. To free it, putiobuf(``) should be used. brelse(``) should not be used on it.

putiobuf(``) frees ```bp`, which should be a buffer allocated with getiobuf(``).

### SEE ALSO

buffercache(9), intro(9)