HAMMER 20B/many: New spike topology, simplify the B-Tree code.
authorMatthew Dillon <dillon@dragonflybsd.org>
Thu, 17 Jan 2008 05:06:09 +0000 (05:06 +0000)
committerMatthew Dillon <dillon@dragonflybsd.org>
Thu, 17 Jan 2008 05:06:09 +0000 (05:06 +0000)
commitfe7678eed9304c1e06d31cb849c6d38bbb67f9d0
treec8a92a28ba692d5d16ef0dc91f0fe7127dee410a
parentd38ab0922d0b4422e23a8c5fadeefeaf27f2b608
HAMMER 20B/many: New spike topology, simplify the B-Tree code.

* Specify a spike as two B-Tree leaf elements instead of one B-Tree
  internal element.  This simplifies boundary corrections when traversing
  through internal nodes.

* Remove subtree_count, which means we don't have to recurse through the
  parent nodes to update it any more.

* Simplify the recursive deletion case.  Neither Leaf or internal nodes
  can be empty.  If unable to remove a node due to a deadlock, simply zero
  out the subtree_offset in the parent (internal) node and deal with it
  later.

* Add some Debugger() shims for deletion cases not yet handled.
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_object.c
sys/vfs/hammer/hammer_spike.c
sys/vfs/hammer/hammer_vnops.c