HAMMER 20B/many: New spike topology, simplify the B-Tree code.
commitb7aaa2cd267843f4df41fb8bfd6f82520ba6c862
authorMatthew Dillon <dillon@dragonflybsd.org>
Thu, 17 Jan 2008 05:06:09 +0000 (17 05:06 +0000)
committerMatthew Dillon <dillon@dragonflybsd.org>
Thu, 17 Jan 2008 05:06:09 +0000 (17 05:06 +0000)
tree48ad73573b9b19b63e7cb2aed5f932828560f83a
parent4d6e14a645ac9f8cf10240f71a035daa90c63b84
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