NAME¶
io_fsync - Synchronize a file's complete in-core state with that on disk
SYNOPSYS¶
#include <errno.h>
#include <libaio.h>
int io_fsync(io_context_t ctx, struct iocb *iocb, io_callback_t cb, int fd);
struct iocb {
void *data;
unsigned key;
short aio_lio_opcode;
short aio_reqprio;
int aio_fildes;
};
typedef void (*io_callback_t)(io_context_t ctx, struct iocb *iocb, long res, long res2);
DESCRIPTION¶
When dealing with asynchronous operations it is sometimes necessary to get into
a consistent state. This would mean for AIO that one wants to know whether a
certain request or a group of request were processed. This could be done by
waiting for the notification sent by the system after the operation
terminated, but this sometimes would mean wasting resources (mainly
computation time).
Calling this function forces all I/O operations operating queued at the time of
the function call operating on the file descriptor
iocb->io_fildes
into the synchronized I/O completion state . The
io_fsync function
returns immediately but the notification through the method described in
io_callback will happen only after all requests for this file
descriptor have terminated and the file is synchronized. This also means that
requests for this very same file descriptor which are queued after the
synchronization request are not affected.
RETURN VALUES¶
Returns
0, otherwise returns
errno.
ERRORS¶
- EFAULT
- iocbs referenced data outside of the program's accessible address
space.
- EINVAL
- ctx refers to an unitialized aio context, the iocb pointed to by
iocbs contains an improperly initialized iocb,
- EBADF
- The iocb contains a file descriptor that does not exist.
- EINVAL
- The file specified in the iocb does not support the given io
operation.
SEE ALSO¶
io(3),
io_cancel(3),
io_getevents(3),
io_prep_pread(3),
io_prep_pwrite(3),
io_queue_init(3),
io_queue_release(3),
io_queue_run(3),
io_queue_wait(3),
io_set_callback(3),
io_submit(3),
errno(3).