---
name: "vholdl"
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/vdrop"
---

# vholdl(9)

acquire/release a hold on a vnode

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

## NAME

**vhold**, **vdrop**, **vdropl** – acquire/release a hold on a vnode

## SYNOPSIS

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

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

*void*\

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

*void*\

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

*void*\

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

*void*\

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

## DESCRIPTION

The **vhold**() and **vholdl**() functions increment the *v\_holdcnt* of the given vnode. If the vnode has already been added to the free list and is still referenced, it will be removed.

The **vdrop**() and **vdropl**() functions decrement the *v\_holdcnt* of the vnode. If the holdcount is less than or equal to zero prior to calling **vdrop**() or **vdropl**(), the system will panic. If the vnode is no longer referenced, it will be freed.

**vhold**() and **vdrop**() lock the vnode interlock while **vholdl**() and **vdropl**() expect the interlock to already be held.

## SEE ALSO

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

## AUTHORS

This manual page was written by Chad David ⟨*davidc@acns.ab.ca*⟩.
