Hi all, Now that we've restructured log intent item recovery to reconstruct the incore deferred work state, apply further cleanups to that code to remove boilerplate that is duplicated across all the _item.c files. Having done that, collapse a bunch of trivial helpers to reduce the overall call chain. That enables us to refactor the relog code so that the ->relog_item implementations only have to know how to format the implementation-specific data encoded in an intent item and don't themselves have to handle the log item juggling. v2: pick up rvb tags If you're going to start using this code, I strongly recommend pulling from my git trees, which are linked below. This has been lightly tested with fstests. Enjoy! Comments and questions are, as always, welcome. --D kernel git tree: https://git.kernel.org/cgit/linux/kernel/git/djwong/xfs-linux.git/log/?h=reconstruct-defer-cleanups-6.8 --- fs/xfs/libxfs/xfs_defer.c | 55 ++++++++++ fs/xfs/libxfs/xfs_defer.h | 3 + fs/xfs/xfs_attr_item.c | 137 +++++++------------------ fs/xfs/xfs_bmap_item.c | 115 ++++++--------------- fs/xfs/xfs_extfree_item.c | 242 ++++++++++++++++---------------------------- fs/xfs/xfs_refcount_item.c | 113 ++++++--------------- fs/xfs/xfs_rmap_item.c | 113 ++++++--------------- fs/xfs/xfs_trans.h | 10 -- 8 files changed, 284 insertions(+), 504 deletions(-)