X-Git-Url: https://git.saurik.com/apple/xnu.git/blobdiff_plain/91447636331957f3d9b5ca5b508f07c526b0074d..cb3231590a3c94ab4375e2228bd5e86b0cf1ad7e:/bsd/man/man2/fsync.2?ds=sidebyside diff --git a/bsd/man/man2/fsync.2 b/bsd/man/man2/fsync.2 index b75a4229d..c772a497e 100644 --- a/bsd/man/man2/fsync.2 +++ b/bsd/man/man2/fsync.2 @@ -42,72 +42,85 @@ .Sh SYNOPSIS .Fd #include .Ft int -.Fn fsync "int fd" +.Fo fsync +.Fa "int fildes" +.Fc .Sh DESCRIPTION -.Fn Fsync +.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