Hi Linus, Please pull this second batch of new changes for 5.7. As promised last week, this batch changes how xfs interacts with memory reclaim; how the log batches and throttles log items; how hard writes near ENOSPC will try to squeeze more space out of the filesystem; and hopefully fix the last of the umount hangs after a catastrophic failure. This branch merges cleanly with master as of a few minutes ago, so please let me know if anything strange happens. --D The following changes since commit 27fb5a72f50aa770dd38b0478c07acacef97e3e7: xfs: prohibit fs freezing when using empty transactions (2020-03-26 08:19:24 -0700) are available in the Git repository at: git://git.kernel.org/pub/scm/fs/xfs/xfs-linux.git tags/xfs-5.7-merge-12 for you to fetch changes up to 5833112df7e9a306af9af09c60127b92ed723962: xfs: reflink should force the log out if mounted with wsync (2020-04-06 08:44:39 -0700) ---------------------------------------------------------------- (More) new code for 5.7: - Validate the realtime geometry in the superblock when mounting - Refactor a bunch of tricky flag handling in the log code - Flush the CIL more judiciously so that we don't wait until there are millions of log items consuming a lot of memory. - Throttle transaction commits to prevent the xfs frontend from flooding the CIL with too many log items. - Account metadata buffers correctly for memory reclaim. - Mark slabs properly for memory reclaim. These should help reclaim run more effectively when XFS is using a lot of memory. - Don't write a garbage log record at unmount time if we're trying to trigger summary counter recalculation at next mount. - Don't block the AIL on locked dquot/inode buffers; instead trigger its backoff mechanism to give the lock holder a chance to finish up. - Ratelimit writeback flushing when buffered writes encounter ENOSPC. - Other minor cleanups. - Make reflink a synchronous operation when the fs is mounted with wsync or sync, which means that now we force the log to disk to record the changes. ---------------------------------------------------------------- Brian Foster (3): xfs: trylock underlying buffer on dquot flush xfs: return locked status of inode buffer on xfsaild push xfs: fix inode number overflow in ifree cluster helper Christoph Hellwig (3): xfs: split xlog_ticket_done xfs: factor out a new xfs_log_force_inode helper xfs: reflink should force the log out if mounted with wsync Darrick J. Wong (3): xfs: validate the realtime geometry in xfs_validate_sb_common xfs: don't write a corrupt unmount record to force summary counter recalc xfs: ratelimit inode flush on buffered write ENOSPC Dave Chinner (15): xfs: don't try to write a start record into every iclog xfs: re-order initial space accounting checks in xlog_write xfs: refactor and split xfs_log_done() xfs: kill XLOG_TIC_INITED xfs: merge xlog_commit_record with xlog_write_done xfs: refactor unmount record writing xfs: remove some stale comments from the log code xfs: Lower CIL flush limit for large logs xfs: Throttle commits on delayed background CIL push xfs: don't allow log IO to be throttled xfs: Improve metadata buffer reclaim accountability xfs: correctly acount for reclaimable slabs xfs: factor common AIL item deletion code xfs: tail updates only need to occur when LSN changes xfs: factor inode lookup from xfs_ifree_cluster Kaixu Xia (2): xfs: remove unnecessary ternary from xfs_create xfs: remove redundant variable assignment in xfs_symlink() fs/xfs/libxfs/xfs_sb.c | 32 +++++ fs/xfs/xfs_buf.c | 11 +- fs/xfs/xfs_dquot.c | 6 +- fs/xfs/xfs_dquot_item.c | 3 +- fs/xfs/xfs_export.c | 14 +- fs/xfs/xfs_file.c | 16 +-- fs/xfs/xfs_inode.c | 174 +++++++++++++--------- fs/xfs/xfs_inode.h | 1 + fs/xfs/xfs_inode_item.c | 31 ++-- fs/xfs/xfs_log.c | 372 +++++++++++++++++------------------------------- fs/xfs/xfs_log.h | 4 - fs/xfs/xfs_log_cil.c | 55 +++++-- fs/xfs/xfs_log_priv.h | 75 +++++++--- fs/xfs/xfs_mount.h | 1 + fs/xfs/xfs_qm.c | 14 +- fs/xfs/xfs_super.c | 17 ++- fs/xfs/xfs_symlink.c | 1 - fs/xfs/xfs_trace.h | 15 +- fs/xfs/xfs_trans.c | 27 ++-- fs/xfs/xfs_trans_ail.c | 88 +++++++----- fs/xfs/xfs_trans_priv.h | 6 +- 21 files changed, 512 insertions(+), 451 deletions(-)