Provided by: libaio-dev_0.3.110-2_amd64 bug


       io_fsync - Synchronize a file's complete in-core state with that on disk


       #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);


       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.


       Returns 0, otherwise returns errno.


       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.


       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).