Man Linux: Main Page and Category List

NAME

       aio_fsync - asynchronous file synchronization (REALTIME)

SYNOPSIS

       #include <aio.h>

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

DESCRIPTION

       The  aio_fsync() function shall asynchronously force all 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() to the  synchronized  I/O
       completion   state.   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,  as for fsync() and fdatasync(),
       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
       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  to  the  calling
       process  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 A value of op other than O_DSYNC or O_SYNC was specified.

       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 fsync()
       operation, which can be retrieved using aio_error().

       The following sections are informative.

EXAMPLES

       None.

APPLICATION USAGE

       The aio_fsync() function is part of the Asynchronous Input  and  Output
       option and need not be available on all implementations.

RATIONALE

       None.

FUTURE DIRECTIONS

       None.

SEE ALSO

       fcntl()  , fdatasync() , fsync() , open() , read() , write() , the Base
       Definitions volume of IEEE Std 1003.1-2001, <aio.h>

COPYRIGHT

       Portions of this text are reprinted and reproduced in  electronic  form
       from IEEE Std 1003.1, 2003 Edition, Standard for Information Technology
       -- Portable Operating System Interface (POSIX),  The  Open  Group  Base
       Specifications  Issue  6,  Copyright  (C) 2001-2003 by the Institute of
       Electrical and Electronics Engineers, Inc and The Open  Group.  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.opengroup.org/unix/online.html .