Here's another update of my gfs2 iomap write patches, with support for buffered writes as well as direct I/O reads and writes through iomap. Changes since v7: * Drop patch that allows to unconditionally mark the inode dirty in __generic_write_end and mark the inode dirty in iomap_write_inline_data instead. * Call the page_write_end hook even for IOMAP_INLINE mappings. * Drop patch "iomap: Put struct iomap_ops into struct 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 (8): iomap: Mark newly allocated buffer heads as new iomap: Complete partial direct I/O writes synchronously 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} 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 | 76 ++++----- fs/ext4/inline.c | 4 +- fs/gfs2/aops.c | 328 ++----------------------------------- fs/gfs2/aops.h | 22 +++ fs/gfs2/bmap.c | 365 ++++++++++++++++++++++++++++++++++++------ fs/gfs2/file.c | 168 +++++++++++++++++-- fs/internal.h | 2 + fs/iomap.c | 136 ++++++++++++---- include/linux/iomap.h | 11 +- 9 files changed, 672 insertions(+), 440 deletions(-) create mode 100644 fs/gfs2/aops.h -- 2.17.0