HAMMER 11/many - initial spike commit.
authorMatthew Dillon <dillon@dragonflybsd.org>
Sat, 29 Dec 2007 09:01:27 +0000 (09:01 +0000)
committerMatthew Dillon <dillon@dragonflybsd.org>
Sat, 29 Dec 2007 09:01:27 +0000 (09:01 +0000)
commitd26d0ae9b763bc95e7517d9825f5488bd3e53e67
tree58cb3f5385d3d926e7881750c15e8c8c5e4ba4b9
parent4f4826d58a20eb3ae0e9066739769cbcbf600dde
HAMMER 11/many - initial spike commit.

* Fix a bug in the cluster disk offset calculation.
* Implement the cluster allocator and related header initialization.
* Remove wildcarding from hammer_btree_cmp().
* Move the historical filter out of hammer_btree_cmp() and into its own
  procedure.
* Allow the ending element in a B-Tree range iteration to be inclusive or
  exclusive of the range.
* Add infrastructure for cluster-localizes searches.
* Initial commit of the spike code (still in progress).

This commit brings in most of the infrastructure needed for the spike code.
The spike code is what glues one cluster's B-Tree to another cluster's B-Tree.
At the moment we spike by taking the B-Tree leaf node at the cursor after
a search and moving all of its elements to a new cluster, then replacing
the pointer to that leaf node in the parent B-Tree node with a cluster
reference.

This is non-optimal at the moment.  Several optimizations are possible and
will be eventually be implemented.
15 files changed:
sbin/hammer/ondisk.c
sbin/newfs_hammer/ondisk.c
sys/vfs/hammer/hammer.h
sys/vfs/hammer/hammer_btree.c
sys/vfs/hammer/hammer_btree.h
sys/vfs/hammer/hammer_cursor.c
sys/vfs/hammer/hammer_cursor.h
sys/vfs/hammer/hammer_inode.c
sys/vfs/hammer/hammer_io.c
sys/vfs/hammer/hammer_object.c
sys/vfs/hammer/hammer_ondisk.c
sys/vfs/hammer/hammer_spike.c
sys/vfs/hammer/hammer_transaction.c
sys/vfs/hammer/hammer_vfsops.c
sys/vfs/hammer/hammer_vnops.c