[GIT PULL] xfs: new features for 4.17

From: Darrick J. Wong
Date: Tue Apr 03 2018 - 00:51:09 EST


Hi Linus,

Here's the first round of fixes for XFS for 4.17. The biggest new
features this time around are the addition of lazytime support, further
enhancement of the on-disk inode metadata verifiers, and a patch to
smooth over some of the AGFL padding problems that have intermittently
plagued users since 4.5. I forsee sending a second pull request next
week with further bug fixes and speedups in the online scrub code and
elsewhere.

This series has been run through a full xfstests run over the weekend
and through a quick xfstests run against this morning's master, with no
major failures reported. Let me know if there's any merge problems.

--D

The following changes since commit 0c8efd610b58cb23cefdfa12015799079aef94ae:

Linux 4.16-rc5 (2018-03-11 17:25:09 -0700)

are available in the git repository at:

git://git.kernel.org/pub/scm/fs/xfs/xfs-linux.git tags/xfs-4.17-merge-1

for you to fetch changes up to dc1baa715bbfbb1902da942d06497e79b40e7bc7:

xfs: do not log/recover swapext extent owner changes for deleted inodes (2018-03-29 10:19:15 -0700)

----------------------------------------------------------------
Changes for this release:
- Various cleanups and code fixes
- Implement lazytime as a mount option
- Convert various on-disk metadata checks from asserts to -EFSCORRUPTED
- Fix accounting problems with the rmap per-ag reservations
- Refactorings and cleanups for xfs_log_force
- Various bugfixes for the reflink code
- Work around v5 AGFL padding problems to prevent fs shutdowns
- Establish inode fork verifiers to inspect on-disk metadata correctness
- Various online scrub fixes
- Fix v5 swapext blowing up on deleted inodes

----------------------------------------------------------------
Brian Foster (6):
xfs: shutdown if block allocation overruns tx reservation
xfs: account format bouncing into rmapbt swapext tx reservation
xfs: rename agfl perag res type to rmapbt
xfs: account only rmapbt-used blocks against rmapbt perag res
xfs: detect agfl count corruption and reset agfl
xfs: clean up xfs_mount allocation and dynamic initializers

Carlos Maiolino (1):
Cleanup old XFS_BTREE_* traces

Christoph Hellwig (16):
fs: don't clear I_DIRTY_TIME before calling mark_inode_dirty_sync
xfs: implement the lazytime mount option
xfs: remove misleading comment text on xfs_inode_item_unlock
xfs: remove an outdated comment for xfs_inode_item_committing
xfs: remove the unused log_flushed variable in xfs_extent_busy_flush
xfs: merge _xfs_log_force and xfs_log_force
xfs: merge _xfs_log_force_lsn and xfs_log_force_lsn
xfs: refactor xfs_log_force
xfs: fix the check for COW extents in xfs_swap_extents
xfs: don't use XFS_BMAPI_ENTRIRE in xfs_get_blocks
xfs: assert that xfs_reflink_allocate_cow is called with XFS_ILOCK_EXCL
xfs: remove xfs_zero_range
xfs: minor cleanup for xfs_get_blocks
xfs: minor cleanup for xfs_reflink_end_cow
xfs: refactor xfs_log_force_lsn
xfs: unwind the try_again loop in xfs_log_force

Darrick J. Wong (15):
xfs: don't iunlock the quota ip when quota block
xfs: convert a few more directory asserts to corruption
xfs: check for cow blocks before trying to clear them
xfs: sanity-check the unused space before trying to use it
xfs: refactor bmap record validation
xfs: refactor inode verifier error logging
xfs: refactor inode buffer verifier error logging
xfs: bmap scrubber should do rmap xref with bmap for sparse files
xfs: inode scrubber shouldn't bother with raw checks
xfs: remove xfs_buf parameter from inode scrub methods
xfs: record inode buf errors as a xref error in inobt scrubber
xfs: move inode extent size hint validation to libxfs
xfs: don't accept inode buffers with suspicious unlinked chains
xfs: flag inode corruption if parent ptr doesn't get us a real inode
xfs: xfs_scrub_iallocbt_xref_rmap_inodes should use xref_set_corrupt

Dave Chinner (6):
xfs: fall back to vmalloc when allocation log vector buffers
xfs: fix transaction allocation deadlock in IO path
xfs: convert XFS_AGFL_SIZE to a helper function
inode: don't memset the inode address space twice
xfs: catch inode allocation state mismatch corruption
xfs: remove dead inode version setting code

Eric Sandeen (2):
xfs: remove unused m_dmevmask from xfs_mount struct
xfs: do not log/recover swapext extent owner changes for deleted inodes

Matthew Wilcox (1):
xfs: Rename xa_ elements to ail_

Nikolay Borisov (1):
xfs: Remove dead code from inode recover function

Vratislav Bendel (1):
xfs: Correctly invert xfs_buftarg LRU isolation logic

fs/inode.c | 12 ++++--
fs/sync.c | 6 +--
fs/xfs/kmem.c | 6 +--
fs/xfs/kmem.h | 8 +++-
fs/xfs/libxfs/xfs_ag_resv.c | 39 ++++++++++--------
fs/xfs/libxfs/xfs_ag_resv.h | 31 ++++++++++++++
fs/xfs/libxfs/xfs_alloc.c | 139 ++++++++++++++++++++++++++++++++++++++++++++++++++++++--------
fs/xfs/libxfs/xfs_alloc.h | 2 +
fs/xfs/libxfs/xfs_alloc_btree.c | 8 +---
fs/xfs/libxfs/xfs_bmap.c | 51 ++++++++++++++++++++---
fs/xfs/libxfs/xfs_bmap.h | 3 ++
fs/xfs/libxfs/xfs_bmap_btree.c | 4 +-
fs/xfs/libxfs/xfs_bmap_btree.h | 14 -------
fs/xfs/libxfs/xfs_btree.c | 125 ++++----------------------------------------------------
fs/xfs/libxfs/xfs_btree.h | 19 ---------
fs/xfs/libxfs/xfs_dir2.h | 2 +-
fs/xfs/libxfs/xfs_dir2_block.c | 59 ++++++++++++++++-----------
fs/xfs/libxfs/xfs_dir2_data.c | 78 +++++++++++++++++++++++++++--------
fs/xfs/libxfs/xfs_dir2_leaf.c | 13 ++++--
fs/xfs/libxfs/xfs_dir2_node.c | 16 +++++---
fs/xfs/libxfs/xfs_format.h | 13 +-----
fs/xfs/libxfs/xfs_ialloc_btree.c | 9 +---
fs/xfs/libxfs/xfs_inode_buf.c | 124 +++++++++++++++++++++++++++++++++++++++++++++++++++----
fs/xfs/libxfs/xfs_inode_buf.h | 5 +++
fs/xfs/libxfs/xfs_inode_fork.c | 27 +++++++-----
fs/xfs/libxfs/xfs_refcount_btree.c | 5 ---
fs/xfs/libxfs/xfs_rmap_btree.c | 12 +++---
fs/xfs/libxfs/xfs_sb.c | 1 -
fs/xfs/scrub/agheader.c | 6 +--
fs/xfs/scrub/attr.c | 2 +-
fs/xfs/scrub/bmap.c | 174 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
fs/xfs/scrub/common.c | 24 ++++-------
fs/xfs/scrub/common.h | 13 +++---
fs/xfs/scrub/dir.c | 2 +-
fs/xfs/scrub/ialloc.c | 5 ++-
fs/xfs/scrub/inode.c | 298 +++++++++++++++++++++++++++++++-----------------------------------------------------------------------------------------------------
fs/xfs/scrub/parent.c | 12 +++++-
fs/xfs/scrub/quota.c | 2 +-
fs/xfs/scrub/rtbitmap.c | 3 +-
fs/xfs/scrub/trace.h | 31 +++-----------
fs/xfs/xfs_aops.c | 20 ++++-----
fs/xfs/xfs_bmap_util.c | 44 ++++++++++++--------
fs/xfs/xfs_buf.c | 2 +-
fs/xfs/xfs_buf_item.c | 10 ++---
fs/xfs/xfs_dquot.c | 6 +--
fs/xfs/xfs_dquot_item.c | 11 ++---
fs/xfs/xfs_error.c | 29 ++++++++++---
fs/xfs/xfs_error.h | 3 ++
fs/xfs/xfs_export.c | 2 +-
fs/xfs/xfs_extent_busy.c | 5 +--
fs/xfs/xfs_file.c | 52 ++++-------------------
fs/xfs/xfs_fsops.c | 2 +-
fs/xfs/xfs_icache.c | 23 ++++++++++-
fs/xfs/xfs_inode.c | 11 ++++-
fs/xfs/xfs_inode.h | 4 --
fs/xfs/xfs_inode_item.c | 29 +++++--------
fs/xfs/xfs_iops.c | 17 +++++++-
fs/xfs/xfs_log.c | 376 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-----------------------------------------------------------------------------------------------
fs/xfs/xfs_log.h | 15 ++-----
fs/xfs/xfs_log_cil.c | 2 +-
fs/xfs/xfs_log_recover.c | 100 +++++++++++++++++++--------------------------
fs/xfs/xfs_mount.c | 4 --
fs/xfs/xfs_mount.h | 13 +++---
fs/xfs/xfs_reflink.c | 25 ++++++------
fs/xfs/xfs_super.c | 71 +++++++++++++++++++++++---------
fs/xfs/xfs_trace.h | 9 +++-
fs/xfs/xfs_trans.c | 32 ++++++++-------
fs/xfs/xfs_trans_ail.c | 152 ++++++++++++++++++++++++++++++++++----------------------------------
fs/xfs/xfs_trans_buf.c | 4 +-
fs/xfs/xfs_trans_inode.c | 14 +++++++
fs/xfs/xfs_trans_priv.h | 42 +++++++++----------
71 files changed, 1365 insertions(+), 1167 deletions(-)