Command Section

VOP_FSYNC(9)           FreeBSD Kernel Developer's Manual          VOP_FSYNC(9)

NAME
     VOP_FDATASYNC, VOP_FSYNC - flush file system buffers for a file

SYNOPSIS
     #include <sys/param.h>
     #include <sys/vnode.h>

     int
     VOP_FDATASYNC(struct vnode *vp, struct thread *td);

     int
     VOP_FSYNC(struct vnode *vp, int waitfor, struct thread *td);

DESCRIPTION
     VOP_FSYNC() ensures that a file can be recovered to its current state
     following a crash.  That typically requires flushing the file's dirty
     buffers, its inode, and possibly other filesystem metadata to persistent
     media.  VOP_FSYNC() is used to implement the sync(2) and fsync(2) system
     calls.

     Its arguments are:

     vp       The vnode of the file.

     waitfor  Whether the function should wait for I/O to complete.  Possible
              values are:

              MNT_WAIT    Synchronously wait for I/O to complete.

              MNT_NOWAIT  Start all I/O, but do not wait for it.

              MNT_LAZY    Push data not written by file system syncer.

     td       The calling thread.

     VOP_FDATASYNC() is similar, but it does not require that all of the
     file's metadata be flushed.  It only requires that the file's data be
     recoverable after a crash.  That implies that the data itself must be
     flushed to disk, as well as some metadata such as the file's size but not
     necessarily its attributes.  VOP_FDATASYNC() should always wait for I/O
     to complete, as if called with MNT_WAIT.  VOP_FDATASYNC() is used to
     implement fdatasync(2).

LOCKS
     The vnode should be exclusively locked on entry, and stays locked on
     return.

RETURN VALUES
     Zero is returned if the call is successful, otherwise an appropriate
     error code is returned.

ERRORS
     [ENOSPC]           The file system is full.

     [EDQUOT]           Quota exceeded.

SEE ALSO
     vnode(9)

AUTHORS
     This manual page was written by Doug Rabson.

FreeBSD 13.1-RELEASE-p6         March 22, 2019         FreeBSD 13.1-RELEASE-p6

Command Section

man2web Home...