---
name: "VOP_ALLOCATE"
section: "9"
platform: "freebsd"
package: "base"
version: "16.0-CURRENT-20261027-61c70dc16a79"
release: "FreeBSD 16.0-CURRENT (2026-10-27)"
platforms: ["freebsd"]
url: "https://new.carta.tech/VOP_ALLOCATE"
---

# VOP\_ALLOCATE(9)

allocate storage for a file

## NAME

**VOP\_ALLOCATE** – allocate storage for a file

## SYNOPSIS

**#include \<sys/param.h\>**

**#include \<sys/vnode.h\>**

*int*\

**VOP\_ALLOCATE**(*struct vnode \*vp*, *off\_t \*offset*, *off\_t \*len*, *int ioflag*, *struct ucred \*cred*);

## DESCRIPTION

This call allocates storage for a range of offsets in a file. It is used to implement the [posix\_fallocate(2)](/posix_fallocate/2.md) system call.

Its arguments are:

- *vp*

  The vnode of the file.

- *offset*

  The start of the range to allocate storage for in the file.

- *len*

  The length of the range to allocate storage for in the file.

- *ioflag*

  Directives and hints to be given to the file system.

- *cred*

  The credentials of the caller.

The *offset* and *len* arguments are updated to reflect the portion of the range that still needs to be allocated on return. A partial allocation is considered a successful operation. The file's contents are not changed.

## LOCKS

The file should be exclusively locked on entry and will still be locked on exit.

## RETURN VALUES

Zero is returned if the call is successful, otherwise an appropriate error code is returned.

## ERRORS

- \[EFBIG\]

  An attempt was made to write a file that exceeds the process's file size limit or the maximum file size.

- \[ENOSPC\]

  The file system is full.

- \[EPERM\]

  An append-only flag is set on the file, but the caller is attempting to write before the current end of file.

## SEE ALSO

[vnode(9)](/vnode/9.md), [VOP\_READ(9)](/VOP_READ/9.md), [VOP\_WRITE(9)](/VOP_WRITE/9.md)
