summaryrefslogtreecommitdiffstats
path: root/man/man2/sync.2
diff options
context:
space:
mode:
Diffstat (limited to 'man/man2/sync.2')
-rw-r--r--man/man2/sync.2148
1 files changed, 148 insertions, 0 deletions
diff --git a/man/man2/sync.2 b/man/man2/sync.2
new file mode 100644
index 000000000..1c0c7d7b4
--- /dev/null
+++ b/man/man2/sync.2
@@ -0,0 +1,148 @@
+.\" Copyright (c) 1992 Drew Eckhardt (drew@cs.colorado.edu), March 28, 1992
+.\" and Copyright (c) 2011 Michael Kerrisk <mtk.manpages@gmail.com>
+.\"
+.\" SPDX-License-Identifier: Linux-man-pages-copyleft
+.\"
+.\" Modified by Michael Haardt <michael@moria.de>
+.\" Modified Sat Jul 24 12:02:47 1993 by Rik Faith <faith@cs.unc.edu>
+.\" Modified 15 Apr 1995 by Michael Chastain <mec@shell.portal.com>:
+.\" Added reference to `bdflush(2)'.
+.\" Modified 960414 by Andries Brouwer <aeb@cwi.nl>:
+.\" 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 (date) "Linux man-pages (unreleased)"
+.SH NAME
+sync, syncfs \- commit filesystem caches to disk
+.SH LIBRARY
+Standard C library
+.RI ( libc ", " \-lc )
+.SH SYNOPSIS
+.nf
+.B #include <unistd.h>
+.P
+.B void sync(void);
+.P
+.BI "int syncfs(int " fd );
+.fi
+.P
+.RS -4
+Feature Test Macro Requirements for glibc (see
+.BR feature_test_macros (7)):
+.RE
+.P
+.BR sync ():
+.nf
+ _XOPEN_SOURCE >= 500
+.\" || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED
+ || /* Since glibc 2.19: */ _DEFAULT_SOURCE
+ || /* glibc <= 2.19: */ _BSD_SOURCE
+.fi
+.P
+.BR syncfs ():
+.nf
+ _GNU_SOURCE
+.fi
+.SH DESCRIPTION
+.BR sync ()
+causes all pending modifications to filesystem metadata and cached file
+data to be written to the underlying filesystems.
+.P
+.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.
+.P
+.BR syncfs ()
+can fail for at least the following reasons:
+.TP
+.B EBADF
+.I fd
+is not a valid file descriptor.
+.TP
+.B EIO
+An error occurred during synchronization.
+This error may relate to data written to any file on the filesystem, or on
+metadata related to the filesystem itself.
+.TP
+.B ENOSPC
+Disk space was exhausted while synchronizing.
+.TP
+.B ENOSPC
+.TQ
+.B EDQUOT
+Data was written to a file on NFS or another filesystem which does not
+allocate space at the time of a
+.BR write (2)
+system call, and some previous write failed due to insufficient
+storage space.
+.SH VERSIONS
+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 Linux waits for I/O completions,
+and thus
+.BR sync ()
+or
+.BR syncfs ()
+provide the same guarantees as
+.BR fsync ()
+called on every file in
+the system or filesystem respectively.
+.SH STANDARDS
+.TP
+.BR sync ()
+POSIX.1-2008.
+.TP
+.BR syncfs ()
+Linux.
+.SH HISTORY
+.TP
+.BR sync ()
+POSIX.1-2001, SVr4, 4.3BSD.
+.TP
+.BR syncfs ()
+Linux 2.6.39,
+glibc 2.14.
+.P
+Since glibc 2.2.2, the Linux prototype for
+.BR sync ()
+is as listed above,
+following the various standards.
+In glibc 2.2.1 and earlier,
+it was "int sync(void)", and
+.BR sync ()
+always returned 0.
+.P
+In mainline kernel versions prior to Linux 5.8,
+.BR syncfs ()
+will fail only when passed a bad file descriptor
+.RB ( EBADF ).
+Since Linux 5.8,
+.\" commit 735e4ae5ba28c886d249ad04d3c8cc097dad6336
+.BR syncfs ()
+will also report an error if one or more inodes failed
+to be written back since the last
+.BR syncfs ()
+call.
+.SH BUGS
+Before Linux 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)