Provided by: manpages-dev_2.17-1_all
fsync, fdatasync - synchronize a file’s complete in-core state with
that on disk
int fsync(int fd);
int fdatasync(int fd);
fsync() copies all in-core parts of a file to disk, and waits until the
device reports that all parts are on stable storage. It also updates
metadata stat information. It does not necessarily ensure that the
entry in the directory containing the file has also reached disk. For
that an explicit fsync() on the file descriptor of the directory is
fdatasync() does the same as fsync() but only flushes user data, not
the meta data like the st_atime or st_mtime (respectively, time of last
access and time of last modification; see stat(2)).
On success, zero is returned. On error, -1 is returned, and errno is
EBADF fd is not a valid file descriptor open for writing.
EIO An error occurred during synchronization.
fd is bound to a special file which does not support
In case the hard disk has write cache enabled, the data may not really
be on permanent storage when fsync() / fdatasync() return.
When an ext2 file system is mounted with the sync option, directory
entries are also implicitly synced by fsync().
On kernels before 2.4, fsync() on big files can be inefficient. An
alternative might be to use the O_SYNC flag to open(2).
POSIX.1b (formerly POSIX.4)
bdflush(2), open(2), sync(2), mount(8), sync(8), update(8)