Hi all, This actually started as what I intended to be a cleanup of xfsaild error handling and the fact that unexpected errors are kind of lost in the ->iop_push() handlers of flushable log items. Some discussion with Dave on that is available here[1]. I was thinking of genericizing the behavior, but I'm not so sure that is possible now given the error handling requirements of the associated items. While thinking through that, I ended up incorporating various cleanups in the somewhat confusing and erratic error handling on the periphery of xfsaild, such as the flush handlers. Most of these are straightforward cleanups except for patch 9, which I think requires careful review and is of debatable value. I have used patch 12 to run an hour or so of highly concurrent fsstress load against it and will execute a longer run over the weekend now that fstests has completed. Thoughts, reviews, flames appreciated. Brian [1] https://lore.kernel.org/linux-xfs/20200331114653.GA53541@bfoster/ Brian Foster (12): xfs: refactor failed buffer resubmission into xfsaild xfs: factor out buffer I/O failure simulation code xfs: always attach iflush_done and simplify error handling xfs: remove unnecessary shutdown check from xfs_iflush() xfs: ratelimit unmount time per-buffer I/O error warning xfs: remove duplicate verification from xfs_qm_dqflush() xfs: abort consistently on dquot flush failure xfs: remove unnecessary quotaoff intent item push handler xfs: elide the AIL lock on log item failure tracking xfs: clean up AIL log item removal functions xfs: remove unused iflush stale parameter xfs: random buffer write failure errortag fs/xfs/libxfs/xfs_errortag.h | 4 +- fs/xfs/libxfs/xfs_inode_buf.c | 7 +-- fs/xfs/xfs_bmap_item.c | 2 +- fs/xfs/xfs_buf.c | 36 ++++++++--- fs/xfs/xfs_buf.h | 1 + fs/xfs/xfs_buf_item.c | 86 ++++---------------------- fs/xfs/xfs_buf_item.h | 2 - fs/xfs/xfs_dquot.c | 84 ++++++++------------------ fs/xfs/xfs_dquot_item.c | 31 +--------- fs/xfs/xfs_error.c | 3 + fs/xfs/xfs_extfree_item.c | 2 +- fs/xfs/xfs_icache.c | 2 +- fs/xfs/xfs_inode.c | 110 +++++++++------------------------- fs/xfs/xfs_inode_item.c | 39 +++--------- fs/xfs/xfs_inode_item.h | 2 +- fs/xfs/xfs_refcount_item.c | 2 +- fs/xfs/xfs_rmap_item.c | 2 +- fs/xfs/xfs_trans_ail.c | 52 +++++++++++++++- fs/xfs/xfs_trans_priv.h | 22 +++---- 19 files changed, 175 insertions(+), 314 deletions(-) -- 2.21.1