1.\" Copyright (c) 2013 Sergey Kandaurov 2.\" All rights reserved. 3.\" 4.\" Redistribution and use in source and binary forms, with or without 5.\" modification, are permitted provided that the following conditions 6.\" are met: 7.\" 1. Redistributions of source code must retain the above copyright 8.\" notice, this list of conditions and the following disclaimer. 9.\" 2. Redistributions in binary form must reproduce the above copyright 10.\" notice, this list of conditions and the following disclaimer in the 11.\" documentation and/or other materials provided with the distribution. 12.\" 13.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 14.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 15.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 16.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 17.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 18.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 19.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 20.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 21.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 22.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 23.\" SUCH DAMAGE. 24.\" 25.\" $FreeBSD$ 26.\" 27.Dd December 27, 2013 28.Dt AIO_FSYNC 2 29.Os 30.Sh NAME 31.Nm aio_fsync 32.Nd asynchronous file synchronization (REALTIME) 33.Sh LIBRARY 34.Lb libc 35.Sh SYNOPSIS 36.In aio.h 37.Ft int 38.Fn aio_fsync "int op" "struct aiocb *iocb" 39.Sh DESCRIPTION 40The 41.Fn aio_fsync 42system call allows the calling process to move all modified data 43associated with the descriptor 44.Fa iocb->aio_fildes 45to a permanent storage device. 46The call returns immediately after the synchronization request has been 47enqueued to the descriptor; the synchronization may or may not have 48completed at the time the call returns. 49.Pp 50The 51.Fa op 52argument can only be set to 53.Dv O_SYNC 54to cause all currently queued I/O operations to be completed 55as if by a call to 56.Xr fsync 2 . 57.Pp 58If _POSIX_PRIORITIZED_IO is defined, and the descriptor supports it, 59then the enqueued operation is submitted at a priority equal to that 60of the calling process minus 61.Fa iocb->aio_reqprio . 62.Pp 63The 64.Fa iocb 65pointer may be subsequently used as an argument to 66.Fn aio_return 67and 68.Fn aio_error 69in order to determine return or error status for the enqueued operation 70while it is in progress. 71.Pp 72If the request could not be enqueued (generally due to invalid arguments), 73the call returns without having enqueued the request. 74.Sh RETURN VALUES 75.Rv -std aio_fsync 76.Sh ERRORS 77The 78.Fn aio_fsync 79system call will fail if: 80.Bl -tag -width Er 81.It Bq Er EAGAIN 82The request was not queued because of system resource limitations. 83.It Bq Er ENOSYS 84The 85.Fn aio_fsync 86system call is not supported. 87.It Bq Er EINVAL 88A value of the 89.Fa op 90argument is not set to 91.Dv O_SYNC . 92.El 93.Pp 94The following conditions may be synchronously detected when the 95.Fn aio_fsync 96system call is made, or asynchronously, at any time thereafter. 97If they are detected at call time, 98.Fn aio_fsync 99returns -1 and sets 100.Va errno 101appropriately; otherwise the 102.Fn aio_return 103system call must be called, and will return -1, and 104.Fn aio_error 105must be called to determine the actual value that would have been 106returned in 107.Va errno . 108.Bl -tag -width Er 109.It Bq Er EBADF 110The 111.Fa iocb->aio_fildes 112argument 113is not a valid descriptor. 114.It Bq Er EINVAL 115This implementation does not support synchronized I/O for this file. 116.El 117.Pp 118If the request is successfully enqueued, but subsequently cancelled 119or an error occurs, the value returned by the 120.Fn aio_return 121system call is per the 122.Xr read 2 123and 124.Xr write 2 125system calls, and the value returned by the 126.Fn aio_error 127system call is one of the error returns from the 128.Xr read 2 129or 130.Xr write 2 131system calls. 132.Sh SEE ALSO 133.Xr aio_cancel 2 , 134.Xr aio_error 2 , 135.Xr aio_read 2 , 136.Xr aio_return 2 , 137.Xr aio_suspend 2 , 138.Xr aio_waitcomplete 2 , 139.Xr aio_write 2 , 140.Xr fsync 2 , 141.Xr siginfo 3 , 142.Xr aio 4 143.Sh STANDARDS 144The 145.Fn aio_fsync 146system call is expected to conform to the 147.St -p1003.1 148standard. 149.Sh HISTORY 150The 151.Fn aio_fsync 152system call first appeared in 153.Fx 7.0 . 154