[GIT PULL] ext4 updates for 5.5

From: Theodore Y. Ts'o
Date: Tue Nov 26 2019 - 07:53:13 EST


The following changes since commit 4f5cafb5cb8471e54afdc9054d973535614f7675:

Linux 5.4-rc3 (2019-10-13 16:37:36 -0700)

are available in the Git repository at:

git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4.git tags/ext4_for_linus

for you to fetch changes up to dfdeeb41fb08fbe11d3cfefba9c0fcd00c95a36d:

Merge branch 'tt/misc' into dev (2019-11-19 12:25:42 -0500)

----------------------------------------------------------------
This merge window saw the the following new featuers added to ext4:

* Direct I/O via iomap (required the iomap-for-next branch from Darrick
as a prereq).
* Support for using dioread-nolock where the block size < page size.
* Support for encryption for file systems where the block size < page size.
* Rework of journal credits handling so a revoke-heavy workload will
not cause the journal to run out of space.
* Replace bit-spinlocks with spinlocks in jbd2

Also included were some bug fixes and cleanups, mostly to clean up
corner cases from fuzzed file systems and error path handling.

----------------------------------------------------------------
Chandan Rajendra (1):
ext4: Enable encryption for subpage-sized blocks

Chengguang Xu (1):
ext4: code cleanup for get_next_id

Christoph Hellwig (20):
xfs: initialize iomap->flags in xfs_bmbt_to_iomap
xfs: set IOMAP_F_NEW more carefully
xfs: use a struct iomap in xfs_writepage_ctx
xfs: refactor the ioend merging code
xfs: turn io_append_trans into an io_private void pointer
xfs: remove the fork fields in the writepage_ctx and ioend
iomap: zero newly allocated mapped blocks
iomap: lift common tracing code from xfs to iomap
iomap: lift the xfs writeback code to iomap
iomap: warn on inline maps in iomap_writepage_map
iomap: move struct iomap_page out of iomap.h
iomap: cleanup iomap_ioend_compare
iomap: pass a struct page to iomap_finish_page_writeback
iomap: better document the IOMAP_F_* flags
iomap: remove the unused iomap argument to __iomap_write_end
iomap: always use AOP_FLAG_NOFS in iomap_write_begin
iomap: ignore non-shared or non-data blocks in xfs_file_dirty
iomap: move the zeroing case out of iomap_read_page_sync
iomap: use write_begin to read pages to unshare
iomap: renumber IOMAP_HOLE to 0

Darrick J. Wong (1):
iomap: enhance writeback error message

Dave Chinner (1):
iomap: iomap that extends beyond EOF should be marked dirty

Eric Biggers (1):
fs/buffer.c: support fscrypt in block_read_full_page()

Gao Xiang (1):
ext4: bio_alloc with __GFP_DIRECT_RECLAIM never fails

Goldwyn Rodrigues (1):
iomap: use a srcmap for a read-modify-write I/O

Jan Kara (32):
iomap: Allow forcing of waiting for running DIO in iomap_dio_rw()
xfs: Use iomap_dio_rw to wait for unaligned direct IO
jbd2: Move dropping of jh reference out of un/re-filing functions
jbd2: Drop unnecessary branch from jbd2_journal_forget()
jbd2: Don't call __bforget() unnecessarily
jbd2: Fix possible overflow in jbd2_log_space_left()
jbd2: Fixup stale comment in commit code
jbd2: Completely fill journal descriptor blocks
ext4: Move marking of handle as sync to ext4_add_nondir()
ext4: Do not iput inode under running transaction
ext4: Fix credit estimate for final inode freeing
ext4: Fix ext4_should_journal_data() for EA inodes
ext4: Use ext4_journal_extend() instead of jbd2_journal_extend()
ext4: Avoid unnecessary revokes in ext4_alloc_branch()
ext4: Provide function to handle transaction restarts
ext4, jbd2: Provide accessor function for handle credits
ocfs2: Use accessor function for h_buffer_credits
jbd2: Fix statistics for the number of logged blocks
jbd2: Reorganize jbd2_journal_stop()
jbd2: Drop pointless check from jbd2_journal_stop()
jbd2: Drop pointless wakeup from jbd2_journal_stop()
jbd2: Factor out common parts of stopping and restarting a handle
jbd2: Account descriptor blocks into t_outstanding_credits
jbd2: Drop jbd2_space_needed()
jbd2: Reserve space for revoke descriptor blocks
jbd2: Rename h_buffer_credits to h_total_credits
jbd2: Make credit checking more strict
ext4: Reserve revoke credits for freed blocks
jbd2: Provide trace event for handle restarts
jbd2: Fine tune estimate of necessary descriptor blocks
ext4: fix leak of quota reservations
jbd2: make jbd2_handle_buffer_credits() handle reserved handles

Joseph Qi (1):
fs/iomap: remove redundant check in iomap_dio_rw()

Matthew Bobrowski (11):
ext4: reorder map.m_flags checks within ext4_iomap_begin()
ext4: update direct I/O read lock pattern for IOCB_NOWAIT
ext4: iomap that extends beyond EOF should be marked dirty
ext4: move set iomap routines into a separate helper ext4_set_iomap()
ext4: split IOMAP_WRITE branch in ext4_iomap_begin() into helper
ext4: introduce new callback for IOMAP_REPORT
ext4: introduce direct I/O read using iomap infrastructure
ext4: move inode extension/truncate code out from ->iomap_end() callback
ext4: move inode extension check out from ext4_iomap_alloc()
ext4: update ext4_sync_file() to not use __generic_file_fsync()
ext4: introduce direct I/O write using iomap infrastructure

Olof Johansson (1):
ext4: remove unused variable warning in parse_options()

Ritesh Harjani (6):
ext4: keep uniform naming convention for io & io_end variables
ext4: Add API to bring in support for unwritten io_end_vec conversion
ext4: Refactor mpage_map_and_submit_buffers function
ext4: Add support for blocksize < pagesize in dioread_nolock
ext4: Enable blocksize < pagesize for dioread_nolock
ext4: Add error handling for io_end_vec struct allocation

Theodore Ts'o (7):
Merge branch 'rh/dioread-nolock-1k' into dev
Merge branch 'iomap-for-next' into mb/dio
Merge branch 'jk/jbd2-revoke-overflow'
Merge branch 'mb/dio' into master
ext4: add more paranoia checking in ext4_expand_extra_isize handling
ext4: work around deleting a file with i_nlink == 0 safely
Merge branch 'tt/misc' into dev

Thomas Gleixner (4):
jbd2: Simplify journal_unmap_buffer()
jbd2: Remove jbd_trylock_bh_state()
jbd2: Make state lock a spinlock
jbd2: Free journal head outside of locked region

yangerkun (1):
ext4: fix a bug in ext4_wait_for_tail_page_commit

Documentation/filesystems/fscrypt.rst | 4 +-
fs/buffer.c | 48 ++-
fs/dax.c | 13 +-
fs/ext2/inode.c | 2 +-
fs/ext4/ext4.h | 22 +-
fs/ext4/ext4_jbd2.c | 32 +-
fs/ext4/ext4_jbd2.h | 106 ++++++-
fs/ext4/extents.c | 149 ++++++----
fs/ext4/file.c | 412 +++++++++++++++++++++-----
fs/ext4/fsync.c | 72 +++--
fs/ext4/ialloc.c | 7 +-
fs/ext4/indirect.c | 125 +++++---
fs/ext4/inode.c | 926 +++++++++++++++++++---------------------------------------
fs/ext4/migrate.c | 103 +++----
fs/ext4/namei.c | 50 ++--
fs/ext4/page-io.c | 167 ++++++-----
fs/ext4/readpage.c | 6 +-
fs/ext4/resize.c | 46 +--
fs/ext4/super.c | 57 +---
fs/ext4/xattr.c | 94 +++---
fs/gfs2/bmap.c | 3 +-
fs/gfs2/file.c | 6 +-
fs/iomap/Makefile | 16 +-
fs/iomap/apply.c | 25 +-
fs/iomap/buffered-io.c | 749 +++++++++++++++++++++++++++++++++++++++++------
fs/iomap/direct-io.c | 11 +-
fs/iomap/fiemap.c | 4 +-
fs/iomap/seek.c | 4 +-
fs/iomap/swapfile.c | 3 +-
fs/iomap/trace.c | 12 +
fs/iomap/trace.h | 88 ++++++
fs/jbd2/checkpoint.c | 2 +-
fs/jbd2/commit.c | 26 +-
fs/jbd2/journal.c | 65 ++++-
fs/jbd2/revoke.c | 6 +
fs/jbd2/transaction.c | 400 +++++++++++++------------
fs/ocfs2/alloc.c | 32 +-
fs/ocfs2/journal.c | 8 +-
fs/ocfs2/suballoc.c | 19 +-
fs/xfs/libxfs/xfs_bmap.c | 14 +-
fs/xfs/libxfs/xfs_bmap.h | 3 +-
fs/xfs/xfs_aops.c | 754 ++++++++---------------------------------------
fs/xfs/xfs_aops.h | 17 --
fs/xfs/xfs_file.c | 13 +-
fs/xfs/xfs_iomap.c | 51 +++-
fs/xfs/xfs_iomap.h | 2 +-
fs/xfs/xfs_pnfs.c | 2 +-
fs/xfs/xfs_reflink.c | 2 +-
fs/xfs/xfs_super.c | 11 +-
fs/xfs/xfs_trace.h | 65 -----
include/linux/iomap.h | 129 +++++---
include/linux/jbd2.h | 118 ++++----
include/linux/journal-head.h | 21 +-
include/trace/events/ext4.h | 13 +-
include/trace/events/jbd2.h | 16 +-
55 files changed, 2776 insertions(+), 2375 deletions(-)
create mode 100644 fs/iomap/trace.c
create mode 100644 fs/iomap/trace.h