VINVALBUF(9) | 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 <davidc@acns.ab.ca> for FreeBSD.

November 14, 2020 | Debian