iomap: rework IOMAP atomic flags
authorJohn Garry <john.g.garry@oracle.com>
Thu, 20 Mar 2025 12:02:50 +0000 (12:02 +0000)
committerChristian Brauner <brauner@kernel.org>
Thu, 20 Mar 2025 14:16:03 +0000 (15:16 +0100)
commit370a6de7651b9745b997c32f90685f9e100ccfcd
tree4d4b795d790bc75732732b86d2fee16548ec1666
parentaacd436e40b0a8f0e8411438c5b5db98bd8f0256
iomap: rework IOMAP atomic flags

Flag IOMAP_ATOMIC_SW is not really required. The idea of having this flag
is that the FS ->iomap_begin callback could check if this flag is set to
decide whether to do a SW (FS-based) atomic write. But the FS can set
which ->iomap_begin callback it wants when deciding to do a FS-based
atomic write.

Furthermore, it was thought that IOMAP_ATOMIC_HW is not a proper name, as
the block driver can use SW-methods to emulate an atomic write. So change
back to IOMAP_ATOMIC.

The ->iomap_begin callback needs though to indicate to iomap core that
REQ_ATOMIC needs to be set, so add IOMAP_F_ATOMIC_BIO for that.

These changes were suggested by Christoph Hellwig and Dave Chinner.

Signed-off-by: John Garry <john.g.garry@oracle.com>
Link: https://lore.kernel.org/r/20250320120250.4087011-4-john.g.garry@oracle.com
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Christian Brauner <brauner@kernel.org>
Documentation/filesystems/iomap/operations.rst
fs/ext4/inode.c
fs/iomap/direct-io.c
fs/iomap/trace.h
fs/xfs/xfs_iomap.c
include/linux/iomap.h