FSYNC(2)		  Linux Programmer's Manual		     FSYNC(2)



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

SYNOPSIS
       #include 

       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 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 support synchro-
	      nization.

       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/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), update(8), sync(8)



Linux 1.3.85			  2001-04-18			     FSYNC(2)