aio_fsync - Asynchronously writes changes in a file to permanent storage
Asynchronous I/O Library (libaio, libaio_raw)
int aio_fsync (
struct aiocb *aiocbp );
op Specifies file or data synchronization.
aiocbp Specifies a pointer to an aiocb structure. This function uses
only the aio_fildes and aio_sigevent fields of the aiocbp con-
The aio_fsync function asynchronously causes system buffers containing a
file's modified data to be written to permanent storage. All modified data
in the file indicated by the file descriptor in the aio_fildes member of
the aiocb structure referenced by the aiocbp argument is forced to the syn-
chronized I/O completion state.
The aio_fsync function returns when the synchronization request has been
initiated or queued, even when data cannot be synchronized immediately.
If op is O_DSYNC, all currently queued I/O operations are completed as if
by a call to fdatasync. If op is O_SYNC, all currently queued I/O opera-
tions are completed as if by a call to fsync. If the aio_fsync function
fails, outstanding I/O operations are not guaranteed to have been com-
If aio_fsync succeeds, only the I/O that was queued at the time of the call
is guaranteed to be synchronized; the completion of subsequent I/O is not
The aiocbp value may be used as an argument to the aio_error and aio_return
functions to determine the error or return status of the asynchronous
operation while it is proceeding. When the request is queued, the error
status for the operation is [EINPROGRESS]. When all data has been synchron-
ized, the error status is set to reflect the success or failure of the
operation. The aio_sigevent member of the aiocb structure defines the sig-
nal to be generated upon completion of the operation. If
aio_sigevent.sigev_notify equals SIGEV_SIGNAL and aio_sigevent.sigev_signo
is non-zero, a signal will be generated when all operations have achieved
synchronized I/O completion.
Upon successful completion, the aio_fsync function returns a value of 0
(zero). If the aio_fsync function fails, a value of -1 is returned and
errno is set to indicate the error. If aio_fsync fails, outstanding I/O
operations are not guaranteed to have been completed.
If the aio_fsync function fails, errno may be set to one of the following
[EAGAIN] The requested asynchronous operation was not queued due to
temporary resource limitations.
[EBADF] The aio_fildes member of the aiocb structure is not a valid
[EINVAL] A value of op other than O_DSYNC or O_SYNC was specified.
If any queued I/O operations fail, the aio_fsync function returns error
conditions defined for read and write. The error is returned in the error
status for the asynchronous fsync operation, which can be retrieved using
Functions: fdatasync(2), fcntl(2), fsync(2), open(2), read(2), sync(2),
Guide to Realtime Programming