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 sta­
       ble 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 mtime or atime.


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.

       EROFS, EINVAL
              fd  is  bound to a special file which does not sup­
              port synchronization.

       EIO    An error occurred during synchronization.


NOTES

       In case the hard disk has write cache  enabled,  the  data
       may  not  really be on permanent storage when fsync/fdata­
       sync return.

       When an ext2 file system is mounted with the sync  option,
       directory entries are also implicitely synced by fsync.

       On  kernels  before 2.4, fsync on big files can be ineffi­
       cient.  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), update(8), sync(8)


Man(1) output converted with man2html