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
man2web Home...