OpenBSD manual page server

Manual Page Search Parameters

VINVALBUF(9) Kernel Developer's Manual VINVALBUF(9)

vinvalbuf
flush and invalidate all buffers associated with a vnode

#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);

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.

The vnode is assumed to be locked prior to the call and remains locked upon return.

A value of 0 is returned on success.

vn_lock(devvp, LK_EXCLUSIVE | LK_RETRY);
error = vinvalbuf(devvp, V_SAVE, cred, p, 0, 0);
VOP_UNLOCK(devvp);
if (error)
	return (error);

[]
The file system is full. (With V_SAVE)
[]
Disc quota exceeded. (With V_SAVE)
[]
Sleep operation timed out. (See slptimeo)
[]
A signal needs to be delivered and the system call should be restarted. (With PCATCH set in slpflag)
[]
The system has been interrupted by a signal. (With PCATCH set in slpflag)

tsleep(9), vnode(9)

This man page was originally written by Chad David <davidc@acns.ab.ca> for FreeBSD.
July 25, 2019 OpenBSD-current