FSYNC(2) BSD System Calls Manual FSYNC(2)
fsync, fdatasync -- synchronize a file's in-core state with that on disk
The fsync() function causes all modified data and attributes of fd to be
moved to a permanent storage device. This normally results in all in-
core modified copies of buffers for the associated file to be written to
The fdatasync() function is similar to fsync() except that it only guar-
antees modified data (and metadata necessary to read that data) is com-
mitted to storage. Other file modifications may be left unsynchronized.
fsync() and fdatasync() should be used by programs that require a file to
be in a known state, for example, in building a simple transaction facil-
The fsync() and fdatasync() functions return the value 0 if successful;
otherwise the value -1 is returned and the global variable errno is set
to indicate the error.
The fsync() and fdatasync() functions fail if:
[EBADF] fd is not a valid descriptor.
[EINVAL] fd does not refer to a file which can be synchronized.
[EIO] An I/O error occurred while reading from or writing to
the file system.
The fsync() and fdatasync() functions conform to IEEE Std 1003.1-2008
The fsync() system call first appeared in 4.1cBSD, and the fdatasync()
function has been available since OpenBSD 5.4.
The fdatasync() function is currently a wrapper around fsync(), so it
synchronizes more state than necessary.
BSD March 27, 2017 BSD