[PATCH 0/2] nilfs2: convert O_DIRECT reads to iomap
Viacheslav Dubeyko <[email protected]> Fri, 24 Jul 2026 15:27:43 -0700
| Newsgroups | org.kernel.vger.linux-nilfs,org.kernel.vger.linux-fsdevel |
|---|---|
| Message-ID | <[email protected]> |
This series removes NILFS2 using of blockdev_direct_IO() by converting the O_DIRECT read path to iomap. NILFS2 is a log-structured, copy-on-write filesystem, which makes it a poor fit for a full iomap conversion. Newly allocated blocks are delay-allocated by nilfs_get_block() and only receive a real disk address when the segment constructor writes them out as part of a log. The segment constructor walks buffer_head lists directly and is not integrated with the generic address_space writeback path. First patch adds a new, read-only nilfs_iomap_ops wrapping the existing nilfs_bmap_lookup_contig() lookup. The second patch wires that ops table into O_DIRECT reads via iomap_dio_rw(), sets FMODE_CAN_ODIRECT explicitly on open, and removes nilfs_direct_IO() and the .direct_IO callback entirely. O_DIRECT writes are explicitly downgraded to the ordinary buffered write path in nilfs_file_write_iter(). Viacheslav Dubeyko (2): nilfs2: add iomap operations for direct I/O reads nilfs2: switch O_DIRECT reads to iomap fs/nilfs2/Kconfig | 2 +- fs/nilfs2/Makefile | 2 +- fs/nilfs2/file.c | 40 ++++++++++++++++++++++++-- fs/nilfs2/inode.c | 13 --------- fs/nilfs2/iomap.c | 71 ++++++++++++++++++++++++++++++++++++++++++++++ fs/nilfs2/iomap.h | 13 +++++++++ 6 files changed, 123 insertions(+), 18 deletions(-) create mode 100644 fs/nilfs2/iomap.c create mode 100644 fs/nilfs2/iomap.h -- 2.43.0