Provided by: libaio-dev_0.3.112-5_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 uninitialized 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).