Hi all, This series creates a bulk loading function for metadata btree cursors. We start by creating the idea of a "fake root" for each of the btree root types (AG header and inode) so that we can use a special btree cursor to stage a new btree without altering anything that might already exist. Next, we add utility functions to compute the desired btree shape for a given number of records, load records into new leaf blocks, compute the node blocks from that, and present the new root ready for commit. Finally we extend all four per-AG btree cursor types to support staging cursors and therefore bulk loading. This will be used by upcoming patch series to implement online repair and refactor offline repair. For v4, fix a lot of review comments from Brian Foster, most of which relate to disentangling thornier parts of the code; and clarifying the documentation so that someone other than the author can understand what is going on here. :) If you're going to start using this mess, you probably ought to just pull 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=btree-bulk-loading-5.7