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
andV_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
AUTHORS
This man page was originally written by Chad David <davidc@acns.ab.ca> for FreeBSD.