Hi all, This series refactors log recovery by moving recovery code for each log item type into the source code for the rest of that log item type and using dispatch function pointers to virtualize the interactions. This dramatically reduces the amount of code in xfs_log_recover.c and increases cohesion throughout the log code. In this second version, we dispense with the extra indirection for log intent items. During log recovery pass 2, committing of the recovered intent and intent-done items is done directly by creating xlog_recover_item_types for all intent types. The recovery functions that do the work are now called directly through the xfs_log_item ops structure. Recovery item sorting is less intrusive, and the buffer and inode recovery code are in separate files now. The third version has changes for various minor review comments. If you're going to start using this mess, you probably ought to just pull from my git trees, which are linked below. This is an extraordinary way to destroy everything. 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=refactor-log-recovery