Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
AIO_FSYNC(2)		      System Calls Manual		  AIO_FSYNC(2)

NAME
       aio_fsync -- asynchronous file synchronization (REALTIME)

LIBRARY
       Standard	C Library (libc, -lc)

SYNOPSIS
       #include	<aio.h>

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

DESCRIPTION
       The aio_fsync() system call allows the calling process to move all mod-
       ified  data associated with the descriptor iocb-_aio_fildes to a	perma-
       nent storage device.  The call returns immediately after	 the  synchro-
       nization	 request has been enqueued to the descriptor; the synchroniza-
       tion may	or may not have	completed at the time the call returns.

       The op argument can be set to O_SYNC to cause all currently queued  I/O
       operations  to be completed as if by a call to fsync(2),	or O_DSYNC for
       the behavior of fdatasync(2).

       If _POSIX_PRIORITIZED_IO	is defined, and	the  descriptor	 supports  it,
       then the	enqueued operation is submitted	at a priority equal to that of
       the calling process minus iocb-_aio_reqprio.

       The   iocb   pointer  may  be  subsequently  used  as  an  argument  to
       aio_return() and	aio_error() in order to	determine return or error sta-
       tus for the enqueued operation while it is in progress.

       If the request could not	be enqueued (generally due  to	invalid	 argu-
       ments), the call	returns	without	having enqueued	the request.

       The iocb-_aio_sigevent structure	can be used to request notification of
       the operation's completion as described in aio(4).

RESTRICTIONS
       The  Asynchronous  I/O  Control Block structure pointed to by iocb must
       remain valid until the operation	has completed.

       The asynchronous	I/O control buffer iocb	should be  zeroed  before  the
       aio_fsync() call	to avoid passing bogus context information to the ker-
       nel.

       Modification of the Asynchronous	I/O Control Block structure is not al-
       lowed while the request is queued.

RETURN VALUES
       The  aio_fsync()	 function returns the value 0 if successful; otherwise
       the value -1 is returned	and the	global variable	errno is set to	 indi-
       cate the	error.

ERRORS
       The aio_fsync() system call will	fail if:

       [EAGAIN]		  The  request	was  not  queued because of system re-
			  source limitations.

       [EINVAL]		  The	 asynchronous	 notification	 method	    in
			  iocb-_aio_sigevent.sigev_notify  is  invalid	or not
			  supported.

       [EOPNOTSUPP]	  Asynchronous file synchronization operations on  the
			  file	descriptor iocb-_aio_fildes are	unsafe and un-
			  safe asynchronous I/O	operations are disabled.

       [EINVAL]		  A value of the op argument is	not set	to  O_SYNC  or
			  O_DSYNC.

       The  following  conditions  may	be  synchronously  detected  when  the
       aio_fsync() system call is made,	or asynchronously, at any time	there-
       after.	If  they are detected at call time, aio_fsync()	returns	-1 and
       sets errno appropriately; otherwise the aio_return() system  call  must
       be called, and will return -1, and aio_error() must be called to	deter-
       mine the	actual value that would	have been returned in errno.

       [EBADF]		  The  iocb-_aio_fildes	 argument  is  not a valid de-
			  scriptor.

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

       If  the request is successfully enqueued, but subsequently cancelled or
       an error	occurs,	the value returned by the aio_return() system call  is
       per  the	 read(2)  and write(2) system calls, and the value returned by
       the aio_error() system call is  one  of	the  error  returns  from  the
       read(2) or write(2) system calls.

SEE ALSO
       aio_cancel(2),	   aio_error(2),      aio_read(2),	aio_return(2),
       aio_suspend(2),	  aio_waitcomplete(2),	   aio_write(2),     fsync(2),
       sigevent(3), siginfo(3),	aio(4)

STANDARDS
       The  aio_fsync()	 system	 call  is  expected to conform to the IEEE Std
       1003.1 ("POSIX.1") standard.

HISTORY
       The aio_fsync() system call first appeared in FreeBSD 7.0.  The O_DSYNC
       option appeared in FreeBSD 13.0.

FreeBSD	13.2			January	6, 2021			  AIO_FSYNC(2)

NAME | LIBRARY | SYNOPSIS | DESCRIPTION | RESTRICTIONS | RETURN VALUES | ERRORS | SEE ALSO | STANDARDS | HISTORY

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=aio_fsync&sektion=2&manpath=FreeBSD+14.0-RELEASE+and+Ports>

home | help