[PATCH v4 0/8] Introduce the end_syncfs option

Damien Le Moal <[email protected]> Fri, 27 Feb 2026 17:07:03 +0900
Newsgroups org.kernel.vger.fio
Message-ID <[email protected]>
Jens, Vincent,

This patch series introduces the end_syncfs option and adds support for
it to the main IO engines that can handle regular files.
This new option improves the precision of file system benchmarks when a
large number of files are being handled.

Changes from v3:
 - Fix compilation errors with Windows/cygwin: dirname() and dirfd()
   functions do not exist apparently, so expand the scope of the
   CONFIG_SYNCFS conditional code.

Changes from v2:
 - Reworked patch 1 to build a list of file system mounts per job and
   have the end_syncfs option issue syncfs() call for eacho mounted file
   system when a job write stage completes.
 - Added patch 2 to 7 to support this new option in hte sync, libaio,
   io_uring, fallocate, fileoperations, ftruncate and posixaio IO
   engines.

Damien Le Moal (8):
  fio: introduce the end_syncfs option
  engines: sync: add support for DDIR_SYNCFS
  engines: libaio: add support for DDIR_SYNCFS
  engines: io_uring: add support for DDIR_SYNCFS
  engines: fallocate: add support for DDIR_SYNCFS
  engines: fileoperations: add support for DDIR_SYNCFS
  engines: ftruncate: add support for DDIR_SYNCFS
  engines: posixaio: add support for DDIR_SYNCFS

 HOWTO.rst                |   9 ++-
 backend.c                |  63 +++++++++++++++----
 cconv.c                  |   2 +
 configure                |  26 ++++++++
 engines/falloc.c         |   4 +-
 engines/fileoperations.c |   8 +--
 engines/ftruncate.c      |   4 +-
 engines/io_uring.c       |  16 +++--
 engines/libaio.c         |   8 ++-
 engines/posixaio.c       |   8 ++-
 engines/sync.c           |  11 ++--
 file.h                   |  17 +++++
 filesetup.c              | 132 ++++++++++++++++++++++++++++++++++++---
 fio.1                    |   8 ++-
 fio.h                    |   1 +
 helpers.c                |   8 +++
 helpers.h                |   3 +
 init.c                   |   1 +
 io_ddir.h                |   3 +-
 io_u.c                   |   6 +-
 ioengines.c              |  10 ++-
 ioengines.h              |   4 ++
 options.c                |  19 ++++++
 server.h                 |   2 +-
 stat.c                   |   3 +-
 thread_options.h         |   5 +-
 zbd.c                    |   1 +
 27 files changed, 333 insertions(+), 49 deletions(-)

-- 
2.53.0