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_SAVEandV_SAVEMETA.V_SAVEindicates that dirty buffers should be synced with the disk.V_SAVEMETAindicates that indirect blocks should not be flushed. - cred
- The user credentials that are used to VOP_FSYNC(9) buffers if
V_SAVEis 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
PCATCHset in slpflag) - [
EINTR] - The system has been interrupted by a signal. (With
PCATCHset in slpflag)
SEE ALSO
AUTHORS
This man page was originally written by Chad David <davidc@acns.ab.ca> for FreeBSD.