---
name: "vunref"
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/vput"
---

# vunref(9)

decrement the use count for a vnode

Part of [vput(9)](/vput/9.md).

## NAME

**vput**, **vrele**, **vunref** – decrement the use count for a vnode

## SYNOPSIS

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

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

*void*\

**vput**(*struct vnode \*vp*);

*void*\

**vrele**(*struct vnode \*vp*);

*void*\

**vunref**(*struct vnode \*vp*);

## DESCRIPTION

Decrement the *v\_usecount* field of a vnode.

- *vp*

  the vnode to decrement

The **vrele**() function takes an unlocked vnode and returns with the vnode unlocked.

The **vput**() function should be given a locked vnode as argument, the vnode is unlocked after the function returned. The **vput**() is operationally equivalent to calling [VOP\_UNLOCK(9)](/VOP_UNLOCK/9.md) followed by **vrele**(), with less overhead.

The **vunref**() function takes a locked vnode as argument, and returns with the vnode locked.

Any code in the system which signified its use of a vnode by usecount should call one of the listed function to decrement use counter. If the *v\_usecount* field of the non-doomed vnode reaches zero, then it will be inactivated and placed on the free list.

The **vrele**() function may lock the vnode. All three functions may sleep.

The hold count for the vnode is always greater or equal to the usecount. Non-forced unmount fails when mount point owns a vnode that has non-zero usecount, see [vflush(9)](/vflush/9.md).

## SEE ALSO

[vget(9)](/vget/9.md), [vnode(9)](/vnode/9.md), [vref(9)](/vref/9.md), [vrefcnt(9)](/vrefcnt/9.md)

## AUTHORS

This manual page was written by Doug Rabson and Konstantin Belousov.
