generic btree implementation, version 4
As the mainlinglist seems to have some problems with the large number of patches and I don't want to monopolize it anyway there is just this announcement with a link to the patches:
http://verein.lst.de/~hch/xfs/patches.btree.tgz
The biggest change this time around is that the generic record, key and pointer addressing has been merged into the main patches. There is a new patch early in the series introducing the helpers for this, and a big comment describing how all this addressing works.
The smalles and most important changes is a fix for xfs_btree_delrec which used to pass an unitialized xfs_btree_key structure to xfs_btree_updkey for the non-leaf case since the very first version of the generic btree patches.
On the method side ->get_root_from_inode and ->resize_root have been dropped because we hardcode that way the btree is rooted in the inode in so many other places. If we ever get a differently inode rooted btree we can add the proper abstractions for it. The ->kill_root is back for now, I hope we can sort out the tiny difference between the alloc and inobt btrees later. There also are two new methods to move xfs_btree_check_key / xfs_btree_check_rec into the btree implementations.
In addition to that I've addressed Dave's review comments, except that I've kept the name for the get_dmaxrecs and instead documented why it's called that way (hint the d stands for disk) and what the callers try to do with it.
I think the code is in shape now, and ready for some more QA. I will post a test harness based on Dave's WIP code to help with that shortly.
Quoted 5 lines · Christoph Hellwig
As the mainlinglist seems to have some problems with the large number of patches and I don't want to monopolize it anyway there is just this announcement with a link to the patches:
Rediffed to apply against the current tree, but without any other patches now at th same location.