---
name: "io_prep_fsync"
section: "3"
platform: "linux"
package: "libaio"
version: "0.3.113-5"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/io_prep_fsync"
---

# io\_prep\_fsync(3)

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

## NAME

io\_prep\_fsync - Synchronize a file's complete in-core state with that on disk

## SYNOPSIS

```
#include <errno.h>

#include <libaio.h>

static inline void io_prep_fsync(struct iocb *iocb, int fd);

struct iocb {
	void		*data;
	unsigned	key;
	short		aio_lio_opcode;
	short		aio_reqprio;
	int		aio_fildes;
};

```

## DESCRIPTION

This is an inline convenience function for setting up an *iocbv* for a **FSYNC** request.

The file for which

```
iocb->aio_fildes = fd
```

is a descriptor is set up with the command

```
iocb->aio_lio_opcode = IO_CMD_FSYNC
```

The **io\_prep\_fsync**() function shall set up an **IO\_CMD\_FSYNC** operation to asynchronously force all I/O operations associated with the file indicated by the file descriptor *aio\_fildes* member of the *iocb* structure referenced by the iocb argument and queued at the time of the call to **io\_submit**() 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).

All currently queued I/O operations shall be completed as if by a call to [**fsync**(2)](/fsync/2.md); that is, as defined for synchronized I/O file integrity completion. If the operation queued by **io\_prep\_fsync**() fails, then, as for [**fsync**(2)](/fsync/2.md), outstanding I/O operations are not guaranteed to have been completed.

If **io\_prep\_fsync**() succeeds, then it is only the I/O that was queued at the time of the call to [**io\_submit**(3)](/io_submit/3.md) 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.

This function returns immediately. To schedule the operation, the function [**io\_submit**(3)](/io_submit/3.md) must be called.

Simultaneous asynchronous operations using the same *iocb* produce undefined results.

## RETURN VALUES

None.

## ERRORS

None.

## SEE ALSO

[**io**(3)](/io/3.md), [**io\_cancel**(3)](/io_cancel/3.md), [**io\_fsync**(3)](/io_fsync/3.md), [**io\_getevents**(3)](/io_getevents/3.md), [**io\_prep\_pread**(3)](/io_prep_pread/3.md), [**io\_prep\_pwrite**(3)](/io_prep_pwrite/3.md), [**io\_queue\_init**(3)](/io_queue_init/3.md), [**io\_queue\_release**(3)](/io_queue_release/3.md), [**io\_queue\_run**(3)](/io_queue_run/3.md), [**io\_queue\_wait**(3)](/io_queue_wait/3.md), [**io\_set\_callback**(3)](/io_set_callback/3.md), [**io\_submit**(3)](/io_submit/3.md), [**errno**(3)](/errno/3.md).
