Provided by: manpages-dev_2.17-1_all bug

NAME

       fsync,  fdatasync  -  synchronize  a file’s complete in-core state with
       that on disk

SYNOPSIS

       #include <unistd.h>

       int fsync(int fd);

       int fdatasync(int fd);

DESCRIPTION

       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
       also needed.

       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)).

RETURN VALUE

       On  success,  zero is returned.  On error, -1 is returned, and errno is
       set appropriately.

ERRORS

       EBADF  fd is not a valid file descriptor open for writing.

       EIO    An error occurred during synchronization.

       EROFS, EINVAL
              fd  is  bound  to  a  special  file  which  does   not   support
              synchronization.

NOTES

       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).

CONFORMING TO

       POSIX.1b (formerly POSIX.4)

SEE ALSO

       bdflush(2), open(2), sync(2), mount(8), sync(8), update(8)