]> git.ipfire.org Git - thirdparty/man-pages.git/commitdiff
sync.2: Clarify description and document the Linux data integrity guarantees
authorChristoph Hellwig <hch@infradead.org>
Tue, 9 Feb 2016 16:21:34 +0000 (08:21 -0800)
committerMichael Kerrisk <mtk.manpages@gmail.com>
Thu, 11 Feb 2016 12:34:20 +0000 (13:34 +0100)
Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
man2/sync.2

index 5e222cbc61719240b0b5ad814c8213a9cd0e04bb..28a42c4116979c9fa9ccd1580f0ae3db06b14b86 100644 (file)
@@ -35,7 +35,7 @@
 .\"
 .TH SYNC 2 2015-08-08 "Linux" "Linux Programmer's Manual"
 .SH NAME
-sync, syncfs \- commit buffer cache to disk
+sync, syncfs \- commit filesystem caches to disk
 .SH SYNOPSIS
 .B #include <unistd.h>
 .sp
@@ -64,8 +64,8 @@ _GNU_SOURCE
 .ad
 .SH DESCRIPTION
 .BR sync ()
-causes all buffered modifications to file metadata and data to be
-written to the underlying filesystems.
+causes all pending modifications to file system metadata and cached file
+data to be written to the underlying filesystems.
 
 .BR syncfs ()
 is like
@@ -108,16 +108,21 @@ In glibc 2.2.1 and earlier,
 it was "int sync(void)", and
 .BR sync ()
 always returned 0.
-.SH BUGS
+
 According to the standard specification (e.g., POSIX.1-2001),
 .BR sync ()
 schedules the writes, but may return before the actual
-writing is done.
-However, since version 1.3.20 Linux does actually wait.
-(This still does not guarantee data integrity: modern disks have
-large caches.)
+writing is done.  However Linux waits for I/O completions,
+and thus
+.BR sync ()
+or
+.BR syncfs ()
+provide the same guarantees as fsync called on every file in
+the system or filesystem respectively.
+.SH BUGS
+Before version 1.3.20 Linux did not wait for I/O to complete
+before returning.
 .SH SEE ALSO
-.BR bdflush (2),
 .BR fdatasync (2),
 .BR fsync (2),
 .BR sync (1)