Hi all, Here's v3 of the error handling cleanup patches. Notable changes are that the ail_lock patch has been dropped, the buffer alert messaging patch was split up to factor out a common helper, and the AIL removal patch has been split up primarily to simplify review. New patches have been added to fix up XBF_WRITE_FAIL and address another unused function parameter instance. Thoughts, reviews, flames appreciated. Brian v3: - Drop flags param from xfs_buf_ioend_fail(). - Fix up iflush error handling patch subject and comments. - Drop failed buffer ->ail_lock bypass patch. - Split up AIL removal cleanup patch and dropped switch of call from xfs_buf_item_put(). - Rework XBF_WRITE_FAIL to reflect current buffer state. - Create helper for ratelimited buffer alerts and use appropriately. - Use BLK_STS_IOERR instead of errno_to_blk_status(). - Drop unused param from xfs_imap_to_bp(). v2: https://lore.kernel.org/linux-xfs/20200422175429.38957-1-bfoster@xxxxxxxxxx/ - 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 (17): xfs: refactor failed buffer resubmission into xfsaild xfs: factor out buffer I/O failure code xfs: simplify inode flush error handling xfs: remove unnecessary shutdown check from xfs_iflush() xfs: reset buffer write failure state on successful completion xfs: refactor ratelimited buffer error messages into helper xfs: ratelimit unmount time per-buffer I/O error alert xfs: fix duplicate verification from xfs_qm_dqflush() xfs: abort consistently on dquot flush failure xfs: acquire ->ail_lock from xfs_trans_ail_delete() xfs: use delete helper for items expected to be in AIL xfs: drop unused shutdown parameter from xfs_trans_ail_remove() xfs: combine xfs_trans_ail_[remove|delete]() xfs: remove unused iflush stale parameter xfs: random buffer write failure errortag xfs: remove unused shutdown types xfs: remove unused iget_flags param from xfs_imap_to_bp() fs/xfs/libxfs/xfs_errortag.h | 4 +- fs/xfs/libxfs/xfs_inode_buf.c | 12 +-- fs/xfs/libxfs/xfs_inode_buf.h | 2 +- fs/xfs/scrub/ialloc.c | 3 +- fs/xfs/xfs_bmap_item.c | 2 +- fs/xfs/xfs_buf.c | 65 ++++++++++++---- fs/xfs/xfs_buf.h | 2 + fs/xfs/xfs_buf_item.c | 106 +++++--------------------- fs/xfs/xfs_buf_item.h | 2 - fs/xfs/xfs_dquot.c | 47 +++++------- 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 | 139 ++++++++++++---------------------- fs/xfs/xfs_inode_item.c | 28 +------ fs/xfs/xfs_inode_item.h | 2 +- fs/xfs/xfs_log_recover.c | 2 +- fs/xfs/xfs_message.c | 22 ++++++ fs/xfs/xfs_message.h | 3 + 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 | 71 ++++++++++++----- fs/xfs/xfs_trans_priv.h | 18 +---- 26 files changed, 237 insertions(+), 328 deletions(-) -- 2.21.1