hammer2 - Stabilization pass
commitc57fa38ca4c8500b82352ff5560c515ef4c78f68
authorMatthew Dillon <dillon@apollo.backplane.com>
Tue, 28 Jun 2016 07:26:06 +0000 (28 00:26 -0700)
committerMatthew Dillon <dillon@apollo.backplane.com>
Tue, 28 Jun 2016 07:26:06 +0000 (28 00:26 -0700)
tree91559d6a5f97ccdf6a73b70ae416ad9b44171085
parentb652edda47018dae2393f58e7c7d62bd41f746f8
hammer2 - Stabilization pass

* If the HAMMER2_CHAIN_DEDUP flag is set modified_needs_new_allocation()
  must return 1 to force a new allocation.  This fixes a number of dirty
  buffer rewrite cases that broke dedup.

* Do not try to dedup a chain flagged MODIFIED or INITIAL.

* The indirect-block deletion code in the flusher needed to also count
  blockrefs if it hadn't been done yet.  This fixes cases of missing
  directory entries.

* For now use a transaction in hammer2_strategy_write().  We probably don't
  need it due to the way the logical buffer cache is handled, but do it
  anyway.

* Clean-up some of the code documentation.

* Implement sysctls for dedup and buffer invalidation enablement.  dedup
  is turned on by default, invalidation is turned off.  Invalidation is
  not currently working well.
sys/vfs/hammer2/hammer2.h
sys/vfs/hammer2/hammer2_chain.c
sys/vfs/hammer2/hammer2_flush.c
sys/vfs/hammer2/hammer2_io.c
sys/vfs/hammer2/hammer2_strategy.c
sys/vfs/hammer2/hammer2_vfsops.c