This series re-introduces atomic write support. Some time ago support was added for O_ATOMIC in fio, but O_ATOMIC support never made it into the linux kernel, so fio support was dropped. However some plumbing was left behind; specifically, we can still pass command line arg --atomic=1, which sets thread option oatomic, but that is just ignored. Linux v6.11-rc added initial atomic write support through RWF_ATOMIC flag. See latest man pages for details of RWF_ATOMIC: https://git.kernel.org/pub/scm/docs/man-pages/man-pages.git/tree/ This series uses the "atomic" command line option to set RWF_ATOMIC on a per IO. Support is added for libaio, pvsync2, and io_uring ioengines. Since RWF_ATOMIC is only relevant to those ioengines mentioned, trying to set --atomic=1 for other ioengines now errors. The verify feature can be useful to prove atomic writes. However, atomic writes only ensure a proper CRC, but not sequence number. So sequence numbers are ignored in verify mode for atomic writes. This series is marked as an RFC because: - If ok to use pre-existing plumbing, I am not sure whether setting --atomic=1 for unsupported ioengines should error - Whether verify mode should ignore sequence number always or we should add a new option for that. John Garry (7): os-linux: Renumber RWF_UNCACHED os-linux: Define RWF_ATOMIC os: Reintroduce atomic write support verify: Ignore sequence number errors for atomic writes pvsync2: Support RWF_ATOMIC libaio: Support RWF_ATOMIC io_uring: Support RWF_ATOMIC engines/io_uring.c | 5 ++++- engines/libaio.c | 7 ++++++- engines/sync.c | 9 ++++++--- init.c | 20 +++++++++++++++++--- ioengines.h | 2 ++ options.c | 2 ++ os/os-linux.h | 7 ++++++- verify.c | 2 +- 8 files changed, 44 insertions(+), 10 deletions(-) -- 2.31.1