HAMMER VFS - Remove B-Tree allocation hints, add double_buffer option.
authorMatthew Dillon <dillon@apollo.backplane.com>
Wed, 12 Jan 2011 03:43:23 +0000 (19:43 -0800)
committerMatthew Dillon <dillon@apollo.backplane.com>
Wed, 12 Jan 2011 03:43:23 +0000 (19:43 -0800)
commitb4f86ea3cc005dec41539fde163eeb5606e81cb8
tree2f4f1c6589c9de45f5d3cba49feae9bf5c035f0f
parent9549a44976ecdf66fb2776ebd80df41417bb8798
HAMMER VFS - Remove B-Tree allocation hints, add double_buffer option.

* Remove the allocation hints when allocating b-tree nodes and
  remove over-full test in the blockmap allocator for b-tree and
  meta-data elements.

  The hinting and leaving some space unused in the big-blocks did
  not improve performance.  Write performance is actually slightly
  better when new allocations are made linearly.

* Either way we have to depend on the reblocker to reorganize the
  B-Tree.

* Add a sysctl vfs.hammer.double_buffer, defaulting to off.  This
  is currently used for debugging and testing live-dedup.

  Normally only small-data blocks are run through the device vnode's
  buffer cache (allowing us to consolidate many small data blocks
  within the device vnode's buffer cache), and large data blocks are
  read directly into the file vnode's buffer.

  Turning on double_buffer cases ALL file data to run through the
  device vnode's buffer cache, resulting in double data caching
  which is not normally useful, so leave this off for now.  It will
  not improve performance.
sys/vfs/hammer/hammer.h
sys/vfs/hammer/hammer_blockmap.c
sys/vfs/hammer/hammer_btree.c
sys/vfs/hammer/hammer_reblock.c
sys/vfs/hammer/hammer_vfsops.c
sys/vfs/hammer/hammer_vnops.c