-.\" Hey Emacs! This file is -*- nroff -*- source.
-.\"
.\" Copyright 1993 Rickard E. Faith (faith@cs.unc.edu) and
.\" and Copyright 2006 Michael Kerrisk <mtk.manpages@gmail.com>
.\"
+.\" %%%LICENSE_START(VERBATIM)
.\" Permission is granted to make and distribute verbatim copies of this
.\" manual provided the copyright notice and this permission notice are
.\" preserved on all copies.
.\"
.\" Formatted or processed versions of this manual, if unaccompanied by
.\" the source, must acknowledge the copyright and authors of this work.
+.\" %%%LICENSE_END
.\"
.\" Modified 21 Aug 1994 by Michael Chastain <mec@shell.portal.com>:
.\" Removed note about old libc (pre-4.5.26) translating to 'sync'.
.\" Modified 18 Apr 2001 by Andi Kleen
.\" Fix description to describe what it really does; add a few caveats.
.\" 2006-04-28, mtk, substantial rewrite of various parts.
+.\" 2012-02-27 Various changes by Christoph Hellwig <hch@lst.de>
.\"
-.TH FSYNC 2 2008-11-07 "Linux" "Linux Programmer's Manual"
+.TH FSYNC 2 2016-03-15 "Linux" "Linux Programmer's Manual"
.SH NAME
fsync, fdatasync \- synchronize a file's in-core state with storage device
.SH SYNOPSIS
.in
.sp
.BR fsync ():
-_BSD_SOURCE || _XOPEN_SOURCE
-.br
- || /* since glibc 2.8: */ _POSIX_C_SOURCE\ >=\ 200112L
-.\" _POSIX_C_SOURCE\ >=\ 200112L only since glibc 2.8
+ Glibc 2.16 and later:
+ No feature test macros need be defined
+ Glibc up to and including 2.15:
+ _BSD_SOURCE || _XOPEN_SOURCE
+ || /* since glibc 2.8: */ _POSIX_C_SOURCE\ >=\ 200112L
.br
.BR fdatasync ():
-_POSIX_C_SOURCE\ >=\ 199309L || _XOPEN_SOURCE\ >=\ 500
+ _POSIX_C_SOURCE\ >=\ 199309L || _XOPEN_SOURCE\ >=\ 500
.SH DESCRIPTION
.BR fsync ()
transfers ("flushes") all modified in-core data of
.I fd
to the disk device (or other permanent storage device) so that all
changed information can be retrieved even after the system crashed or
-was rebooted. This includes writing through or flushing a disk cache
-if present.
+was rebooted.
+This includes writing through or flushing a disk cache if present.
The call blocks until the device reports that the transfer has completed.
It also flushes metadata information associated with the file (see
.BR stat (2)).
-
Calling
.BR fsync ()
does not necessarily ensure
.BR fdatasync ()
is to reduce disk activity for applications that do not
require all metadata to be synchronized with the disk.
-.SH "RETURN VALUE"
+.SH RETURN VALUE
On success, these system calls return zero.
On error, \-1 is returned, and
.I errno
.BR EROFS ", " EINVAL
.I fd
is bound to a special file which does not support synchronization.
-.SH "CONFORMING TO"
-4.3BSD, POSIX.1-2001.
+.SH CONFORMING TO
+POSIX.1-2001, POSIX.1-2008, 4.3BSD.
.SH AVAILABILITY
On POSIX systems on which
.BR fdatasync ()
.\" -1: unavailable, 0: ask using sysconf().
.\" glibc defines them to 1.
.SH NOTES
+On some UNIX systems (but not Linux),
+.I fd
+must be a
+.I writable
+file descriptor.
+
In Linux 2.2 and earlier,
.BR fdatasync ()
is equivalent to
The
.BR fsync ()
implementations in older kernels and lesser used filesystems
-does not know how to flush disk caches. In these cases disk caches need to
-be disabled using
+does not know how to flush disk caches.
+In these cases disk caches need to be disabled using
.BR hdparm (8)
or
.BR sdparm (8)
to guarantee safe operation.
-.SH "SEE ALSO"
+.SH SEE ALSO
.BR bdflush (2),
.BR open (2),
.BR sync (2),
.BR sync_file_range (2),
.BR hdparm (8),
.BR mount (8),
-.BR sync (8),
-.BR update (8)
+.BR sync (1)