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.
|