int
aio_fsync(
int op
, struct aiocb *aiocbp
)
)
system call allows the calling process to force all modified data
associated with the file descriptor
aiocbp->aio_fildes
to be flushed to the stable storage device.
The call returns immediately after the synchronization request has been
enqueued to the descriptor; the synchronization may or may not have
completed at the time the call returns.
If the request could not be enqueued, generally due to invalid arguments,
the call returns without having enqueued the request.
The
op
argument could be set only to
O_DSYNC
or
O_SYNC
.
If
op
is
O_DSYNC
,
then
aio_fsync()
does the same as a
fdatasync(
)
call, if
O_SYNC
,
then the same as
fsync().
If
_POSIX_PRIORITIZED_IO
is defined, and the descriptor supports it, then the enqueued
operation is submitted at a priority equal to that of the calling
process minus
aiocbp->aio_reqprio
.
The
aiocbp
pointer may be subsequently used as an argument to
aio_return()
and
aio_error(
)
in order to determine return or error status for the enqueued operation
while it is in progress.
aiocbp
should be zeroed before the
aio_fsync(
)
system call to avoid passing bogus context information to the kernel.
Modifications of the Asynchronous I/O Control Block structure after the request has been enqueued, but before the request has completed, are not allowed.
)
system call will fail if:
EAGAIN
]
The following conditions may be synchronously detected when the
aio_fsync()
system call is made, or asynchronously, at any time thereafter.
If they are detected at call time,
aio_fsync(
)
returns -1 and sets
errno
appropriately; otherwise the
aio_return(
)
system call must be called, and will return -1, and
aio_error(
)
must be called to determine the actual value that would have been
returned in
errno.
EBADF
]
aiocbp->aio_fildes
is invalid for writing.
EINVAL
]
EINVAL
]
op
argument is neither set to
O_DSYNC
nor
O_SYNC
.
)
system call is expected to conform to the
IEEE Std 1003.1-2001 (``POSIX.1'')
standard.
)
system call first appeared in
NetBSD5.0.