[GIT PULL] iomap: new code for 5.10-rc1

From: Darrick J. Wong
Date: Tue Oct 13 2020 - 12:41:34 EST


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(-)