Hi all, Here's a v2 of the various error handling cleanup patches. I opted to retain and slightly rework the xfs_qm_dqflush() error handling patch into something that seems a bit more graceful by simply expanding the error path to include the buffer association. The dqflush verifier check has been fixed up to cover the in-core structure instead of being removed (note that this results in a small tweak to patch 7, but I retained the R-b tags from v1). Finally, a couple new patches are inserted to combine the AIL item removal functions and remove unused shutdown types. Various other small changes are noted in the changelog below. Thoughts, reviews, flames appreciated. Brian git repo: https://github.com/bsfost/linux-xfs/tree/xfs-flush-error-handling-cleanups-v2 v2: - Rename some helper functions. - Fix up dquot flush verifier instead of removing it. - Drop quotaoff push handler removal patch. - Reuse existing ratelimit state for buffer error messages. - Combine AIL removal helpers. - Refactor iflush error handling rework to update log item. - Remove unused shutdown types. v1: https://lore.kernel.org/linux-xfs/20200417150859.14734-1-bfoster@xxxxxxxxxx/ Brian Foster (13): xfs: refactor failed buffer resubmission into xfsaild xfs: factor out buffer I/O failure simulation code xfs: fallthru to buffer attach on error and simplify error handling xfs: remove unnecessary shutdown check from xfs_iflush() xfs: ratelimit unmount time per-buffer I/O error message xfs: fix duplicate verification from xfs_qm_dqflush() xfs: abort consistently on dquot flush failure xfs: elide the AIL lock on log item failure tracking xfs: clean up AIL log item removal functions xfs: combine xfs_trans_ail_[remove|delete]() xfs: remove unused iflush stale parameter xfs: random buffer write failure errortag xfs: remove unused shutdown types 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 | 42 ++++++++++-- fs/xfs/xfs_buf.h | 2 + fs/xfs/xfs_buf_item.c | 96 ++++---------------------- fs/xfs/xfs_buf_item.h | 2 - fs/xfs/xfs_dquot.c | 84 +++++++++-------------- fs/xfs/xfs_dquot_item.c | 17 +---- fs/xfs/xfs_error.c | 3 + fs/xfs/xfs_extfree_item.c | 2 +- fs/xfs/xfs_fsops.c | 5 +- fs/xfs/xfs_icache.c | 2 +- fs/xfs/xfs_inode.c | 124 ++++++++++------------------------ fs/xfs/xfs_inode_item.c | 39 ++--------- fs/xfs/xfs_inode_item.h | 2 +- fs/xfs/xfs_mount.h | 2 - fs/xfs/xfs_refcount_item.c | 2 +- fs/xfs/xfs_rmap_item.c | 2 +- fs/xfs/xfs_trans_ail.c | 79 ++++++++++++++++------ fs/xfs/xfs_trans_priv.h | 23 +------ 21 files changed, 200 insertions(+), 341 deletions(-) -- 2.21.1