.Sh SYNOPSIS
.Fd #include <unistd.h>
.Ft int
-.Fn fsync "int fd"
+.Fo fsync
+.Fa "int fildes"
+.Fc
.Sh DESCRIPTION
.Fn Fsync
causes all modified data and attributes of
-.Fa fd
+.Fa fildes
to be moved 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
Note that while
.Fn fsync
-will flush all data from the host
-to the drive (i.e. the "permanent storage
-device"), the
-drive itself may not physically
-write the data to the
-platters for quite some time
-and it may be written in an
-out-of-order sequence.
+will flush all data from the host to the drive
+(i.e. the "permanent storage device"),
+the drive itself may not physically write the data
+to the platters for quite some time
+and it may be written in an out-of-order sequence.
.Pp
Specifically, if the drive loses power
or the OS crashes,
-the application
-may find that only some or none of their data was
-written. The disk drive may also re-order
-the data so that later writes
-may be present while earlier writes are not.
+the application may find that only some or none of their data was written.
+The disk drive may also re-order the data
+so that later writes may be present, while earlier writes are not.
.Pp
-This is not a theoretical
-edge case. This scenario is easily reproduced
-with real world workloads and drive
-power failures.
+This is not a theoretical edge case.
+This scenario is easily reproduced with real world workloads
+and drive power failures.
.Pp
-For applications that require tighter guarantess about
-the integrity of their data, MacOS X provides the
-F_FULLFSYNC fcntl. The F_FULLFSYNC fcntl asks the
-drive to flush all buffered data to permanent
-storage. Applications such as databases that require
-a strict ordering of writes should use F_FULLFSYNC to
-ensure their data is written in the order they expect.
+For applications that require tighter guarantees
+about the integrity of their data,
+Mac OS X provides the F_FULLFSYNC fcntl.
+The F_FULLFSYNC fcntl asks the drive to flush all buffered data
+to permanent storage.
+Applications, such as databases,
+that require a strict ordering of writes
+should use F_FULLFSYNC to ensure that their data
+is written in the order they expect.
Please see
.Xr fcntl 2
for more detail.
.Pp
.Sh RETURN VALUES
-A 0 value is returned on success. A -1 value indicates
-an error.
+.Rv -std fsync
.Sh ERRORS
The
.Fn fsync
-fails if:
+system call will fail if:
.Bl -tag -width Er
+.\" ==========
.It Bq Er EBADF
-.Fa fd
+.Fa fildes
is not a valid descriptor.
+.\" ==========
+.It Bq Er EINTR
+Its execution is interrupted by a signal.
+.\" ==========
.It Bq Er EINVAL
-.Fa fd
-refers to a socket, not to a file.
+.Fa fildes
+refers to a file type (e.g., a socket)
+that does not support this operation.
+.\" ==========
.It Bq Er EIO
An I/O error occurred while reading from or writing to the file system.
.El
+.Pp
+If a queued I/O operation fails,
+.Fn fsync
+may fail with any of the errors defined for
+.Xr read 2
+or
+.Xr write 2 .
.Sh SEE ALSO
+.Xr fcntl 2 ,
+.Xr read 2 ,
.Xr sync 2 ,
+.Xr write 2 ,
.Xr sync 8 ,
-.Xr update 8 ,
-.Xr fcntl 2
+.Xr update 8
.Sh HISTORY
The
.Fn fsync