Hi all, This new patch series refactors the existing code that handles metadata updates to the unlinked list when adding or removing inodes from that list. It then adds an in-core hashtable to record which inode's next_unlinked field points to a given inode. This enables us to remove any inode from the on-disk unlinked structure without having to actually walk the entire unlinked list, which reduces overhead substantially. Since v2 this series has been reworked so that the iunlink code is more robust in the face of backref cache failures (since we can always fall back to the old bucket walking code), removal of the unlinked inode counts, standardization of the helper function parameter types, and fixing other 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=incore-unlinked-list xfsprogs git tree: https://git.kernel.org/cgit/linux/kernel/git/djwong/xfsprogs-dev.git/log/?h=incore-unlinked-list fstests git tree: https://git.kernel.org/cgit/linux/kernel/git/djwong/xfstests-dev.git/log/?h=incore-unlinked-list