NAME

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


SYNOPSIS

     #include <unistd.h>

     #ifdef _POSIX_SYNCHRONIZED_IO

     int fdatasync(int fd));

     #endif


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.

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

     EIO     An error occurred during synchronization.


BUGS

     Currently (Linux 2.0.23) fdatasync is equivalent to fsync.


CONFORMING TO

     POSIX1b (formerly POSIX.4)


SEE ALSO

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