Hi all, This series reduces the number of indirect function calls when we want to iterate the incore inode radix tree, and reduces the number of arguments that must be passed to the walk function. I made a few observations about incore inode radix tree walks -- the one caller (blockgc) that cares about radix tree tags is internal to xfs_icache.c, and there's a 1:1 mapping between that tag and the iterator function. Furthermore, the only other caller (quotaoff) is the only caller to supply a nonzero flags argument, it never specifies a radix tree tag, and it only walks inodes that have VFS state. The first patch moves quotaoff to walk the vfs inode list to drop all attached dquots, which frees us to remove the iter_flags argument and the indirect function calls from xfs_inode_walk. Next, we merge the code that walks reclaimable inodes into xfs_inode_walk and refactor all the code that sets and clears the radix tree tags in the perag structure and the perag tree itself. This series is a prerequisite for the next patchset, since deferred inode inactivation will add another inode radix tree tag and iterator function to go with it. v2: walk the vfs inode list when running quotaoff instead of the radix tree, then rework the (now completely internal) inode walk function to take the tag as the main parameter. v3: merge the reclaim loop into xfs_inode_walk, then consolidate the radix tree tagging functions 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=inode-walk-cleanups-5.13 --- fs/xfs/libxfs/xfs_sb.c | 2 fs/xfs/libxfs/xfs_sb.h | 4 fs/xfs/xfs_icache.c | 377 ++++++++++++++++++---------------------------- fs/xfs/xfs_icache.h | 18 +- fs/xfs/xfs_qm_syscalls.c | 56 ++++--- fs/xfs/xfs_super.c | 2 fs/xfs/xfs_trace.h | 6 - 7 files changed, 194 insertions(+), 271 deletions(-)