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

NAME

       fdatasync - synchronize a file’s in-core data with that on disk

SYNOPSIS

       #include <unistd.h>

       int fdatasync(int fd);

DESCRIPTION

       fdatasync()  flushes  all  data  buffers  of a file to disk (before the
       system call returns).  It resembles fsync()  but  is  not  required  to
       update the metadata such as access time.

       Applications that access databases or log files often write a tiny data
       fragment (e.g.,  one  line  in  a  log  file)  and  then  call  fsync()
       immediately  in  order  to  ensure  that the written data is physically
       stored on the harddisk. Unfortunately, fsync() will always initiate two
       write  operations:  one  for  the newly written data and another one in
       order to update the modification time  stored  in  the  inode.  If  the
       modification  time is not a part of the transaction concept fdatasync()
       can be used to avoid unnecessary inode disk write operations.

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.

BUGS

       Currently (Linux 2.2) fdatasync() is equivalent to fsync().

AVAILABILITY

       On   POSIX    systems    on    which    fdatasync()    is    available,
       _POSIX_SYNCHRONIZED_IO is defined in <unistd.h> to a value greater than
       0. (See also sysconf(3).)

CONFORMING TO

       POSIX1b (formerly POSIX.4)

SEE ALSO

       fsync(2)
       B.O. Gallmeister, POSIX.4, O’Reilly, pp. 220-223 and 343.