---
name: "VOP_DEALLOCATE"
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_DEALLOCATE"
---

# VOP\_DEALLOCATE(9)

zero and/or deallocate storage from a file

## NAME

**VOP\_DEALLOCATE** – zero and/or deallocate storage from a file

## SYNOPSIS

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

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

*int*\

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

## DESCRIPTION

This VOP call zeroes/deallocates storage for an offset range in a file. It is used to implement the [fspacectl(2)](/fspacectl/2.md) system call.

Its arguments are:

- *vp*

  The vnode of the file.

- *offset*

  The start of the range to deallocate storage in the file.

- *len*

  The length of the range to deallocate storage in the file.

- *flags*

  The flags of this call. This should be set to 0 for now.

- *ioflag*

  Directives and hints to be given to the file system.

- *cred*

  The credentials of the caller.

*\*offset* and *\*len* are updated to reflect the portion of the range that still needs to be zeroed/deallocated on return. Partial result is considered a successful operation. For a non-partial successful completion, *\*len* is updated to be the value 0, and *\*offset* is incremented by the number of bytes zeroed before the end-of-file.

## LOCKS

The vnode should be 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

- \[EINVAL\]

  Invalid *offset*, *len*, or *flags* parameters are passed into this VOP call.

- \[ENODEV\]

  The vnode type is not supported by this VOP call.

- \[ENOSPC\]

  The file system is full.

- \[EPERM\]

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

## SEE ALSO

[vnode(9)](/vnode/9.md)

## AUTHORS

**VOP\_DEALLOCATE** and this manual page was written by Ka Ho Ng ⟨*khng@FreeBSD.org*⟩ under sponsorship from the FreeBSD Foundation.
