Hi Linus, Please pull these new changes to the iomap code for 5.10. There's not a lot of new stuff going on here -- a little bit of code refactoring to make iomap workable with btrfs' fsync locking model, cleanups in preparation for adding THP support for filesystems, and fixing a data corruption issue for blocksize < pagesize filesystems. The branch merges cleanly with your HEAD branch as of a few minutes ago. Please let me know if there are any strange problems. It's been a pretty quiet cycle, so I don't anticipate any more iomap pulls other than whatever new bug fixes show up. --D The following changes since commit f4d51dffc6c01a9e94650d95ce0104964f8ae822: Linux 5.9-rc4 (2020-09-06 17:11:40 -0700) are available in the Git repository at: git://git.kernel.org/pub/scm/fs/xfs/xfs-linux.git tags/iomap-5.10-merge-4 for you to fetch changes up to 1a31182edd0083bb9f26e582ed39f92f898c4d0a: iomap: Call inode_dio_end() before generic_write_sync() (2020-09-28 08:51:08 -0700) ---------------------------------------------------------------- New code for 5.10: - Don't WARN_ON weird states that unprivileged users can create. - Don't invalidate page cache when direct writes want to fall back to buffered. - Fix some problems when readahead ios fail. - Fix a problem where inline data pages weren't getting flushed during an unshare operation. - Rework iomap to support arbitrarily many blocks per page in preparation to support THP for the page cache. - Fix a bug in the blocksize < pagesize buffered io path where we could fail to initialize the many-blocks-per-page uptodate bitmap correctly when the backing page is actually up to date. This could cause us to forget to write out dirty pages. - Split out the generic_write_sync at the end of the directio write path so that btrfs can drop the inode lock before sync'ing the file. - Call inode_dio_end before trying to sync the file after a O_DSYNC direct write (instead of afterwards) to match the behavior of the old directio code. ---------------------------------------------------------------- Andreas Gruenbacher (1): iomap: Fix direct I/O write consistency check Christoph Hellwig (1): iomap: Allow filesystem to call iomap_dio_complete without i_rwsem Goldwyn Rodrigues (1): iomap: Call inode_dio_end() before generic_write_sync() Matthew Wilcox (Oracle) (12): iomap: Clear page error before beginning a write iomap: Mark read blocks uptodate in write_begin iomap: Fix misplaced page flushing fs: Introduce i_blocks_per_page iomap: Use kzalloc to allocate iomap_page iomap: Use bitmap ops to set uptodate bits iomap: Support arbitrarily many blocks per page iomap: Convert read_count to read_bytes_pending iomap: Convert write_count to write_bytes_pending iomap: Convert iomap_write_end types iomap: Change calling convention for zeroing iomap: Set all uptodate bits for an Uptodate page Nikolay Borisov (1): iomap: Use round_down/round_up macros in __iomap_write_begin Qian Cai (1): iomap: fix WARN_ON_ONCE() from unprivileged users fs/dax.c | 13 ++-- fs/iomap/buffered-io.c | 194 ++++++++++++++++++++---------------------------- fs/iomap/direct-io.c | 49 +++++++++--- fs/jfs/jfs_metapage.c | 2 +- fs/xfs/xfs_aops.c | 2 +- include/linux/dax.h | 3 +- include/linux/iomap.h | 5 ++ include/linux/pagemap.h | 16 ++++ 8 files changed, 150 insertions(+), 134 deletions(-)