[GIT PULL] xfs: new code for 5.10, part 1

From: Darrick J. Wong
Date: Wed Oct 14 2020 - 16:51:03 EST


Hi Linus,

Please pull this first large pile of new stuff for 5.10. The biggest
changes are two new features for the ondisk metadata: one to record the
sizes of the inode btrees in the AG to increase redundancy checks and to
improve mount times; and a second new feature to support timestamps
until the year 2486. We also fixed a problem where reflinking into a
file that requires synchronous writes wouldn't actually flush the
updates to disk; clean up a fair amount of cruft; and started fixing
some bugs in the realtime volume code.

I anticipate sending a second pull request in a few days to add some
scalability improvements, to schedule deprecation of old features, and
to add fixes for the realtime code.

The branch merges cleanly with upstream as of a few minutes ago, so
please let me know if anything strange happens.

--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/xfs-5.10-merge-2

for you to fetch changes up to fe341eb151ec0ba80fb74edd6201fc78e5232b6b:

xfs: ensure that fpunch, fcollapse, and finsert operations are aligned to rt extent size (2020-09-15 20:52:42 -0700)

----------------------------------------------------------------
New code for 5.10:
- Clean up the buffer ioend calling path so that the retry strategy
isn't quite so scattered everywhere.
- Clean up m_sb_bp handling.
- New feature: storing inode btree counts in the AGI to speed up certain
mount time per-AG block reservation operatoins and add a little more
metadata redundancy.
- New feature: Widen inode timestamps and quota grace expiration
timestamps to support dates through the year 2486.
- Get rid of more of our custom buffer allocation API wrappers.
- Use a proper VLA for shortform xattr structure namevals.
- Force the log after reflinking or deduping into a file that is opened
with O_SYNC or O_DSYNC.
- Fix some math errors in the realtime allocator.

----------------------------------------------------------------
Carlos Maiolino (6):
xfs: remove kmem_realloc()
xfs: Remove kmem_zalloc_large()
xfs: remove typedef xfs_attr_sf_entry_t
xfs: Remove typedef xfs_attr_shortform_t
xfs: Use variable-size array for nameval in xfs_attr_sf_entry
xfs: Convert xfs_attr_sf macros to inline functions

Christoph Hellwig (15):
xfs: refactor the buf ioend disposition code
xfs: mark xfs_buf_ioend static
xfs: refactor xfs_buf_ioend
xfs: move the buffer retry logic to xfs_buf.c
xfs: fold xfs_buf_ioend_finish into xfs_ioend
xfs: refactor xfs_buf_ioerror_fail_without_retry
xfs: remove xfs_buf_ioerror_retry
xfs: lift the XBF_IOEND_FAIL handling into xfs_buf_ioend_disposition
xfs: simplify the xfs_buf_ioend_disposition calling convention
xfs: use xfs_buf_item_relse in xfs_buf_item_done
xfs: clear the read/write flags later in xfs_buf_ioend
xfs: remove xlog_recover_iodone
xfs: simplify xfs_trans_getsb
xfs: remove xfs_getsb
xfs: reuse _xfs_buf_read for re-reading the superblock

Darrick J. Wong (19):
xfs: store inode btree block counts in AGI header
xfs: use the finobt block counts to speed up mount times
xfs: support inode btree blockcounts in online scrub
xfs: support inode btree blockcounts in online repair
xfs: enable new inode btree counters feature
xfs: explicitly define inode timestamp range
xfs: refactor quota expiration timer modification
xfs: refactor default quota grace period setting code
xfs: refactor quota timestamp coding
xfs: move xfs_log_dinode_to_disk to the log recovery code
xfs: redefine xfs_timestamp_t
xfs: redefine xfs_ictimestamp_t
xfs: widen ondisk inode timestamps to deal with y2038+
xfs: widen ondisk quota expiration timestamps to handle y2038+
xfs: trace timestamp limits
xfs: enable big timestamps
xfs: force the log after remapping a synchronous-writes file
xfs: make sure the rt allocator doesn't run off the end
xfs: ensure that fpunch, fcollapse, and finsert operations are aligned to rt extent size

Dave Chinner (1):
xfs: xfs_iflock is no longer a completion

Zheng Bin (1):
xfs: Remove unneeded semicolon

fs/xfs/kmem.c | 22 ----
fs/xfs/kmem.h | 7 --
fs/xfs/libxfs/xfs_ag.c | 5 +
fs/xfs/libxfs/xfs_attr.c | 14 ++-
fs/xfs/libxfs/xfs_attr_leaf.c | 43 ++++---
fs/xfs/libxfs/xfs_attr_sf.h | 29 +++--
fs/xfs/libxfs/xfs_da_format.h | 6 +-
fs/xfs/libxfs/xfs_dquot_buf.c | 35 ++++++
fs/xfs/libxfs/xfs_format.h | 211 +++++++++++++++++++++++++++++--
fs/xfs/libxfs/xfs_fs.h | 1 +
fs/xfs/libxfs/xfs_ialloc.c | 5 +
fs/xfs/libxfs/xfs_ialloc_btree.c | 65 +++++++++-
fs/xfs/libxfs/xfs_iext_tree.c | 2 +-
fs/xfs/libxfs/xfs_inode_buf.c | 130 +++++++++----------
fs/xfs/libxfs/xfs_inode_buf.h | 15 ++-
fs/xfs/libxfs/xfs_inode_fork.c | 8 +-
fs/xfs/libxfs/xfs_log_format.h | 7 +-
fs/xfs/libxfs/xfs_log_recover.h | 1 -
fs/xfs/libxfs/xfs_quota_defs.h | 8 +-
fs/xfs/libxfs/xfs_sb.c | 6 +-
fs/xfs/libxfs/xfs_shared.h | 3 +
fs/xfs/libxfs/xfs_trans_inode.c | 17 ++-
fs/xfs/scrub/agheader.c | 30 +++++
fs/xfs/scrub/agheader_repair.c | 24 ++++
fs/xfs/scrub/inode.c | 31 +++--
fs/xfs/scrub/symlink.c | 2 +-
fs/xfs/xfs_acl.c | 2 +-
fs/xfs/xfs_attr_list.c | 6 +-
fs/xfs/xfs_bmap_util.c | 16 +++
fs/xfs/xfs_buf.c | 208 +++++++++++++++++++++++++-----
fs/xfs/xfs_buf.h | 17 +--
fs/xfs/xfs_buf_item.c | 264 ++-------------------------------------
fs/xfs/xfs_buf_item.h | 12 ++
fs/xfs/xfs_buf_item_recover.c | 2 +-
fs/xfs/xfs_dquot.c | 66 ++++++++--
fs/xfs/xfs_dquot.h | 3 +
fs/xfs/xfs_file.c | 17 ++-
fs/xfs/xfs_icache.c | 19 ++-
fs/xfs/xfs_inode.c | 83 +++++-------
fs/xfs/xfs_inode.h | 38 +-----
fs/xfs/xfs_inode_item.c | 61 ++++++---
fs/xfs/xfs_inode_item.h | 5 +-
fs/xfs/xfs_inode_item_recover.c | 76 +++++++++++
fs/xfs/xfs_ioctl.c | 7 +-
fs/xfs/xfs_log_recover.c | 60 +++------
fs/xfs/xfs_mount.c | 32 ++---
fs/xfs/xfs_mount.h | 1 -
fs/xfs/xfs_ondisk.h | 38 ++++--
fs/xfs/xfs_qm.c | 13 ++
fs/xfs/xfs_qm.h | 4 +
fs/xfs/xfs_qm_syscalls.c | 18 ++-
fs/xfs/xfs_quota.h | 8 --
fs/xfs/xfs_rtalloc.c | 13 +-
fs/xfs/xfs_super.c | 28 +++--
fs/xfs/xfs_trace.h | 29 ++++-
fs/xfs/xfs_trans.c | 2 +-
fs/xfs/xfs_trans.h | 2 +-
fs/xfs/xfs_trans_buf.c | 46 +++----
fs/xfs/xfs_trans_dquot.c | 6 +
59 files changed, 1183 insertions(+), 746 deletions(-)