]> git.ipfire.org Git - thirdparty/man-pages.git/blobdiff - man2/sync.2
man-pages-5.00.Announce, man-pages-5.00.lsm: Tweak "4.xx" to "5.xx"
[thirdparty/man-pages.git] / man2 / sync.2
index a597d19b446788a7e0437433ebff5649f403ace7..7198f3311b05c3d3f756f7c1c489c3204263cabf 100644 (file)
 .\" Modified 2001-10-10 by aeb, following Michael Kerrisk.
 .\" 2011-09-07, mtk, Added syncfs() documentation,
 .\"
-.TH SYNC 2 2012-05-04 "Linux" "Linux Programmer's Manual"
+.TH SYNC 2 2017-09-15 "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
+.PP
 .B void sync(void);
-.sp
+.PP
 .BI "int syncfs(int " fd );
-.sp
+.PP
 .in -4n
 Feature Test Macro Requirements for glibc (see
 .BR feature_test_macros (7)):
 .in
-.sp
+.PP
 .BR sync ():
 .ad l
 .RS 4
-_BSD_SOURCE || _XOPEN_SOURCE\ >=\ 500 ||
-_XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
+_XOPEN_SOURCE\ >=\ 500
+.\"    || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
+    || /* Since glibc 2.19: */ _DEFAULT_SOURCE
+    || /* Glibc versions <= 2.19: */ _BSD_SOURCE
 .RE
 .ad
-.sp
+.PP
 .BR syncfs ():
 .ad l
 .RS 4
@@ -64,9 +66,9 @@ _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 filesystem metadata and cached file
+data to be written to the underlying filesystems.
+.PP
 .BR syncfs ()
 is like
 .BR sync (),
@@ -82,7 +84,7 @@ to indicate the error.
 .SH ERRORS
 .BR sync ()
 is always successful.
-
+.PP
 .BR syncfs ()
 can fail for at least the following reason:
 .TP
@@ -95,29 +97,34 @@ first appeared in Linux 2.6.39;
 library support was added to glibc in version 2.14.
 .SH CONFORMING TO
 .BR sync ():
-SVr4, 4.3BSD, POSIX.1-2001.
-
+POSIX.1-2001, POSIX.1-2008, SVr4, 4.3BSD.
+.PP
 .BR syncfs ()
 is Linux-specific.
 .SH NOTES
-Since glibc 2.2.2 the Linux prototype for
+Since glibc 2.2.2, the Linux prototype for
 .BR sync ()
 is as listed above,
 following the various standards.
-In libc4, libc5, and glibc up to 2.2.1
+In glibc 2.2.1 and earlier,
 it was "int sync(void)", and
 .BR sync ()
 always returned 0.
-.SH BUGS
+.PP
 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 sync (1),
 .BR fdatasync (2),
-.BR fsync (2),
-.BR sync (8)
+.BR fsync (2)