aio_fsync - Asynchronously writes changes in a file to
permanent storage
#include <aio.h>
int aio_fsync (
int op,
struct aiocb *aiocbp );
Asynchronous I/O Library (libaio, libaio_raw)
Specifies file or data synchronization. Specifies a
pointer to an aiocb structure. This function uses only the
aio_fildes and aio_sigevent fields of the aiocbp control
block.
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 synchronized 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 operations 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
completed.
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 guaranteed.
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
synchronized, the error status is set to reflect the success
or failure of the operation. The aio_sigevent member
of the aiocb structure defines the signal 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 values: The requested asynchronous operation
was not queued due to temporary resource limitations.
The aio_fildes member of the aiocb structure is not a
valid file descriptor. 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
aio_error.
Functions: fdatasync(2), fcntl(2), fsync(2), open(2),
read(2), sync(2), write(2)
Guide to Realtime Programming
aio_fsync(2)
[ Back ] |