VINVALBUF(9) FreeBSD Kernel Developer's Manual VINVALBUF(9)
NAME
vinvalbuf - flush and invalidate all buffers associated with a vnode
SYNOPSIS
#include <sys/param.h>
#include <sys/vnode.h>
int
vinvalbuf(struct vnode *vp, int flags, struct ucred *cred,
struct proc *p, int slpflag, uint64_t slptimeo);
DESCRIPTION
The vinvalbuf() function invalidates all of the buffers associated with
the given vnode. This includes buffers on the clean list and the dirty
list. If the V_SAVE flag is specified then the buffers on the dirty list
are synced prior to being released. If the V_SAVEMETA flag is set,
indirect blocks will not be flushed.
Its arguments are:
vp A pointer to the vnode whose buffers will be invalidated.
flags The supported flags are V_SAVE and V_SAVEMETA. V_SAVE
indicates that dirty buffers should be synced with the disk.
V_SAVEMETA indicates that indirect blocks should not be
flushed.
cred The user credentials that are used to VOP_FSYNC(9) buffers if
V_SAVE is set.
p The process responsible for this call.
slpflag The slp flag that will be used in the priority of any calls to
tsleep_nsec(9) in the function.
slptimeo The timeout for any calls to tsleep_nsec(9) in the function.
LOCKS
The vnode is assumed to be locked prior to the call and remains locked
upon return.
RETURN VALUES
A value of 0 is returned on success.
PSEUDOCODE
vn_lock(devvp, LK_EXCLUSIVE | LK_RETRY);
error = vinvalbuf(devvp, V_SAVE, cred, p, 0, 0);
VOP_UNLOCK(devvp);
if (error)
return (error);
ERRORS
[ENOSPC] The file system is full. (With V_SAVE)
[EDQUOT] Disc quota exceeded. (With V_SAVE)
[EWOULDBLOCK] Sleep operation timed out. (See slptimeo)
[ERESTART] A signal needs to be delivered and the system call
should be restarted. (With PCATCH set in slpflag)
[EINTR] The system has been interrupted by a signal. (With
PCATCH set in slpflag)
SEE ALSO
tsleep(9), vnode(9)
AUTHORS
This man page was originally written by Chad David <
[email protected]>
for FreeBSD.
FreeBSD 14.1-RELEASE-p8 November 14, 2020 FreeBSD 14.1-RELEASE-p8