Provided by: manpages-posix-dev_2013a-2_all bug

PROLOG

       This  manual  page  is part of the POSIX Programmer's Manual.  The Linux implementation of this interface
       may differ (consult the corresponding Linux manual page for details of Linux behavior), or the  interface
       may not be implemented on Linux.

NAME

       aio_fsync — asynchronous file synchronization

SYNOPSIS

       #include <aio.h>

       int aio_fsync(int op, struct aiocb *aiocbp);

DESCRIPTION

       The  aio_fsync()  function shall asynchronously perform a file synchronization operation, as specified by
       the op argument, for I/O operations associated with the file indicated by the file descriptor  aio_fildes
       member  of  the  aiocb  structure referenced by the aiocbp argument and queued at the time of the call to
       aio_fsync().  The function call shall return when the  synchronization  request  has  been  initiated  or
       queued to the file or device (even when the data cannot be synchronized immediately).

       If  op is O_DSYNC, all currently queued I/O operations shall be completed as if by a call to fdatasync();
       that is, as defined for synchronized I/O data integrity completion.

       If op is O_SYNC, all currently queued I/O operations shall be completed as if by a call to fsync();  that
       is,  as defined for synchronized I/O file integrity completion.  If the aio_fsync() function fails, or if
       the operation queued by aio_fsync() fails, then outstanding I/O operations are  not  guaranteed  to  have
       been completed.

       If  aio_fsync()  succeeds, then it is only the I/O that was queued at the time of the call to aio_fsync()
       that is guaranteed to be forced to the relevant completion state. The completion of subsequent I/O on the
       file descriptor is not guaranteed to be completed in a synchronized fashion.

       The  aiocbp  argument  refers  to  an  asynchronous I/O control block. The aiocbp value may be used as an
       argument to aio_error() and aio_return() in order to  determine  the  error  status  and  return  status,
       respectively, 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 successfully  transferred,  the  error
       status  shall  be  reset  to  reflect  the success or failure of the operation. If the operation does not
       complete successfully, the error status for the operation  shall  be  set  to  indicate  the  error.  The
       aio_sigevent  member  determines  the  asynchronous  notification to occur as specified in Section 2.4.1,
       Signal Generation and Delivery when all operations have achieved synchronized I/O completion.  All  other
       members  of  the  structure  referenced  by aiocbp are ignored. If the control block referenced by aiocbp
       becomes an illegal address prior to asynchronous I/O completion, then the behavior is undefined.

       If the aio_fsync() function fails or aiocbp indicates an error condition, data is not guaranteed to  have
       been successfully transferred.

RETURN VALUE

       The aio_fsync() function shall return the value 0 if the I/O operation is successfully queued; otherwise,
       the function shall return the value −1 and set errno to indicate the error.

ERRORS

       The aio_fsync() function shall fail if:

       EAGAIN The requested asynchronous operation was not queued due to temporary resource limitations.

       EBADF  The aio_fildes member of the aiocb structure referenced by the aiocbp argument is not a valid file
              descriptor open for writing.

       EINVAL This implementation does not support synchronized I/O for this file.

       EINVAL The aio_fildes member of the aiocb structure refers to a file on which an fsync() operation is not
              possible.

       EINVAL A value of op other than O_DSYNC or O_SYNC  was  specified,  or  O_DSYNC  was  specified  and  the
              implementation  does  not provide runtime support for the Synchronized Input and Output option, or
              O_SYNC was specified and the  implementation  does  not  provide  runtime  support  for  the  File
              Synchronization option.

       In  the  event  that  any of the queued I/O operations fail, aio_fsync() shall return the error condition
       defined for read() and write().  The  error  is  returned  in  the  error  status  for  the  asynchronous
       operation, which can be retrieved using aio_error().

       The following sections are informative.

EXAMPLES

       None.

APPLICATION USAGE

       None.

RATIONALE

       None.

FUTURE DIRECTIONS

       None.

SEE ALSO

       fcntl(), fdatasync(), fsync(), open(), read(), write()

       The Base Definitions volume of POSIX.1‐2008, <aio.h>

COPYRIGHT

       Portions of this text are reprinted and reproduced in electronic form from IEEE Std 1003.1, 2013 Edition,
       Standard for Information Technology -- Portable Operating System Interface (POSIX), The Open  Group  Base
       Specifications  Issue 7, Copyright (C) 2013 by the Institute of Electrical and Electronics Engineers, Inc
       and The Open Group.  (This is POSIX.1-2008 with the 2013 Technical Corrigendum 1 applied.) In  the  event
       of  any  discrepancy between this version and the original IEEE and The Open Group Standard, the original
       IEEE and The Open Group Standard is the referee document. The original Standard can be obtained online at
       http://www.unix.org/online.html .

       Any  typographical  or formatting errors that appear in this page are most likely to have been introduced
       during  the  conversion  of  the  source  files  to  man  page  format.  To  report  such   errors,   see
       https://www.kernel.org/doc/man-pages/reporting_bugs.html .