Here's an update of my gfs2 iomap write patches, with support for buffered writes as well as direct I/O reads and writes through iomap. Significant changes since v6: * Switch to Christoph's patch for splitting out __generic_write_end and put the inode-dirtying change in a separate commit. * Switch froma mandatory write_end operation to an optional page_write_end hook. * Add a patch to pass struct iomap_ops in struct iomap at the end for demonstration purposes. Significant changes since v5: * Initial gfs2 specific cleanups split off and posted separately. * New patch for generic iomap inline data handling. * Iomap write_begin operation removed. A 4.17 based version of the patches can be found here: https://git.kernel.org/pub/scm/linux/kernel/git/gfs2/linux-gfs2.git/log/?h=iomap-write Thanks, Andreas Andreas Gruenbacher (10): iomap: Mark newly allocated buffer heads as new iomap: Complete partial direct I/O writes synchronously fs: allow to always dirty inode in __generic_write_end iomap: Generic inline data handling iomap: Add page_write_end iomap hook gfs2: iomap buffered write support gfs2: gfs2_extent_length cleanup gfs2: iomap direct I/O support gfs2: Remove gfs2_write_{begin,end} iomap: Pass struct iomap_ops to iomap actors Christoph Hellwig (2): iomap: inline data should be an iomap type, not a flag fs: factor out a __generic_write_end helper fs/buffer.c | 75 ++++----- fs/dax.c | 8 +- fs/ext4/inline.c | 4 +- fs/gfs2/aops.c | 328 ++----------------------------------- fs/gfs2/aops.h | 22 +++ fs/gfs2/bmap.c | 368 ++++++++++++++++++++++++++++++++++++------ fs/gfs2/file.c | 172 ++++++++++++++++++-- fs/internal.h | 2 + fs/iomap.c | 99 +++++++++--- include/linux/iomap.h | 13 +- 10 files changed, 653 insertions(+), 438 deletions(-) create mode 100644 fs/gfs2/aops.h -- 2.17.0