1 Aug 06:58
leaf_split has landed
Daniel Phillips <phillips <at> phunq.net>
2008-08-01 04:58:08 GMT
2008-08-01 04:58:08 GMT
Another messy little function for the file index btree set of btree leaf functions has landed, leaf_split: http://tux3.org/tux3?f=0fed5998fbec;file=test/leaf.c This appears to work. It was able to split the sample leaf at any entry position, include zero (leaving an empty leaf in the original btree block) or num_entries (leaving an empty leaf in the split block). This was not a whole lot easier to write than leaf_insert. In fact, this whole two level design makes the coding quite hard, but the benefit is clearly worth the effort I think. The functions so far are very fast, and the structure is really, really compact. Which will help offset the fact that tux3 will often be loading a lot of version data that it doesn't actually need in order to get at a particular version, including the current version. I do not think this will be a problem in practice because heavily versioned files are actually pretty rare, and cache effects most likely will not be noticeable until up in the several hundred version range. At that level, probably every versioning filesystem is going to exhibit some cache effects, not just Tux3. And we have a long term plan for keeping the cache footprint of versioned extents to a manageable level, even for thousands of versions, described in the original lkml posting. Another possibility is to keep around a "digest" metadata btree that contains only the pointers for a particular version, and make that be consistent somehow with the "full" weave-style metadata. Since this would be maintained only for the current version, total metadata still(Continue reading)
RSS Feed