summaryrefslogtreecommitdiff
path: root/static/netbsd/man2/fsync.2
diff options
context:
space:
mode:
Diffstat (limited to 'static/netbsd/man2/fsync.2')
-rw-r--r--static/netbsd/man2/fsync.2196
1 files changed, 196 insertions, 0 deletions
diff --git a/static/netbsd/man2/fsync.2 b/static/netbsd/man2/fsync.2
new file mode 100644
index 00000000..0c2dec4b
--- /dev/null
+++ b/static/netbsd/man2/fsync.2
@@ -0,0 +1,196 @@
+.\" $NetBSD: fsync.2,v 1.21 2021/02/17 22:55:20 wiz Exp $
+.\"
+.\" Copyright (c) 1983, 1993
+.\" The Regents of the University of California. All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\" notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\" notice, this list of conditions and the following disclaimer in the
+.\" documentation and/or other materials provided with the distribution.
+.\" 3. Neither the name of the University nor the names of its contributors
+.\" may be used to endorse or promote products derived from this software
+.\" without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\" @(#)fsync.2 8.1 (Berkeley) 6/4/93
+.\"
+.Dd February 17, 2021
+.Dt FSYNC 2
+.Os
+.Sh NAME
+.Nm fsync ,
+.Nm fsync_range
+.Nd "synchronize a file's in-core state with that on disk"
+.Sh LIBRARY
+.Lb libc
+.Sh SYNOPSIS
+.In unistd.h
+.Ft int
+.Fn fsync "int fd"
+.Ft int
+.Fn fsync_range "int fd" "int how" "off_t start" "off_t length"
+.Sh DESCRIPTION
+.Fn fsync
+causes all modified data and attributes of
+.Fa fd
+to be written to a permanent storage device.
+This normally results in all in-core modified copies
+of buffers for the associated file to be written to a disk.
+.Pp
+.Fn fsync_range
+is similar, but provides control over the region of the file
+to be synchronized, and the method of synchronization.
+.Pp
+These functions should be used by programs that require a file to be
+in a known state, for example, in building a simple transaction
+facility.
+.Pp
+Note that writing the data to a permanent storage device
+does not necessarily write the data to permanent storage media
+within that device;
+for example, after writing data to a disk device, the data might
+reside in a cache within the device, but not yet on
+more permanent storage within the device.
+Neither
+.Fn fsync
+nor the default behavior of
+.Fn fsync_range
+(without the
+.Dv FDISKSYNC
+flag)
+will flush disk caches,
+because they assume that storage devices are able to ensure that
+completed writes are transferred to media some time between the
+write and a power failure or system crash.
+.Pp
+.Fn fsync_range
+causes all modified data starting at
+.Fa start
+for length
+.Fa length
+of
+.Fa fd
+to be written to a permanent storage device.
+If the
+.Fa length
+parameter is zero,
+.Fn fsync_range
+will synchronize all of the file data.
+.Pp
+.Fn fsync_range
+takes a
+.Fa how
+parameter which contains one or more of the following flags:
+.Bl -tag -width FDATASYNC -offset indent
+.It Dv FDATASYNC
+Synchronize the file data and sufficient meta-data to retrieve the
+data for the specified range.
+This is equivalent to
+.Xr fdatasync 2
+on the specified range.
+.It Dv FFILESYNC
+Synchronize all modified file data and meta-data for the specified range.
+This is equivalent to
+.Nm
+on the specified range.
+.It Dv FDISKSYNC
+Request the destination device to ensure that the relevant data
+and meta-data is flushed from any cache to permanent storage media.
+In the present implementation, the entire cache on the affected device will
+be flushed, and this may have a significant impact on performance.
+.El
+.Pp
+The
+.Dv FDATASYNC
+and
+.Dv FFILESYNC
+flags are mutually exclusive.
+Either of those flags may be combined with the
+.Dv FDISKSYNC
+flag.
+.Pp
+Note that
+.Fn fsync_range
+requires that the file
+.Fa fd
+must be open for writing, whereas
+.Fn fsync
+does not.
+.Sh RETURN VALUES
+A 0 value is returned on success.
+A \-1 value indicates an error.
+.Sh ERRORS
+.Fn fsync
+or
+.Fn fsync_range
+fail if:
+.Bl -tag -width Er
+.It Bq Er EBADF
+.Fa fd
+is not a valid descriptor.
+.It Bq Er EINVAL
+.Fa fd
+refers to a socket, not to a file.
+.It Bq Er EIO
+An I/O error occurred while reading from or writing to the file system.
+.El
+.Pp
+Additionally,
+.Fn fsync_range
+fails if:
+.Bl -tag -width Er
+.It Bq Er EBADF
+.Fa fd
+is not open for writing.
+.It Bq Er EINVAL
+.Fa start
+is less than zero, or
+.Fa start
++
+.Fa length
+is less than
+.Fa start
+or triggers an integer overflow; or
+.Fa how
+contains an invalid value.
+.El
+.Sh NOTES
+For optimal efficiency, the
+.Fn fsync_range
+call requires that the file system containing the file referenced by
+.Fa fd
+support partial synchronization of file data.
+For file systems which do
+not support partial synchronization, the entire file will be synchronized
+and the call will be the equivalent of calling
+.Fn fsync .
+.Sh SEE ALSO
+.Xr fdatasync 2 ,
+.Xr sync 2 ,
+.Xr sync 8
+.Sh HISTORY
+The
+.Fn fsync
+function call appeared in
+.Bx 4.2 .
+.Pp
+The
+.Fn fsync_range
+function call first appeared in
+.Nx 2.0
+and is modeled after the function available in AIX.