]> 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 fc5fcc60877ae150ecc30ee2c9b6e706d2fa8025..7198f3311b05c3d3f756f7c1c489c3204263cabf 100644 (file)
@@ -1,7 +1,7 @@
-.\" Hey Emacs! This file is -*- nroff -*- source.
-.\"
 .\" Copyright (c) 1992 Drew Eckhardt (drew@cs.colorado.edu), March 28, 1992
+.\" and Copyright (c) 2011 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.
@@ -21,6 +21,7 @@
 .\"
 .\" Formatted or processed versions of this manual, if unaccompanied by
 .\" the source, must acknowledge the copyright and authors of this work.
+.\" %%%LICENSE_END
 .\"
 .\" Modified by Michael Haardt <michael@moria.de>
 .\" Modified Sat Jul 24 12:02:47 1993 by Rik Faith <faith@cs.unc.edu>
 .\"   Added the fact that since 1.3.20 sync actually waits.
 .\" Modified Tue Oct 22 22:27:07 1996 by Eric S. Raymond <esr@thyrsus.com>
 .\" Modified 2001-10-10 by aeb, following Michael Kerrisk.
+.\" 2011-09-07, mtk, Added syncfs() documentation,
 .\"
-.TH SYNC 2 2010-09-20 "Linux" "Linux Programmer's Manual"
+.TH SYNC 2 2017-09-15 "Linux" "Linux Programmer's Manual"
 .SH NAME
-sync \- 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 );
+.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
+.PP
+.BR syncfs ():
+.ad l
+.RS 4
+_GNU_SOURCE
 .RE
 .ad
 .SH DESCRIPTION
 .BR sync ()
-causes all buffered modifications to file metadata and data to be
-written to the underlying file systems.
+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 (),
+but synchronizes just the filesystem containing file
+referred to by the open file descriptor
+.IR fd .
+.SH RETURN VALUE
+.BR syncfs ()
+returns 0 on success;
+on error, it returns \-1 and sets
+.I errno
+to indicate the error.
 .SH ERRORS
 .BR sync ()
 is always successful.
-.SH "CONFORMING TO"
+.PP
+.BR syncfs ()
+can fail for at least the following reason:
+.TP
+.B EBADF
+.I fd
+is not a valid file descriptor.
+.SH VERSIONS
+.BR syncfs ()
+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.)
-.SH "SEE ALSO"
-.BR bdflush (2),
+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 sync (1),
 .BR fdatasync (2),
-.BR fsync (2),
-.BR sync (8),
-.BR update (8)
+.BR fsync (2)