git: hammer2 - Stabilization pass

Matthew Dillon dillon at
Tue Jun 28 00:33:19 PDT 2016

commit c57fa38ca4c8500b82352ff5560c515ef4c78f68
Author: Matthew Dillon <dillon at>
Date:   Tue Jun 28 00:26:06 2016 -0700

    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
    * 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.

Summary of changes:
 sys/vfs/hammer2/hammer2.h          | 15 ++-----
 sys/vfs/hammer2/hammer2_chain.c    | 53 +++++++++-------------
 sys/vfs/hammer2/hammer2_flush.c    | 14 ++++++
 sys/vfs/hammer2/hammer2_io.c       |  8 +++-
 sys/vfs/hammer2/hammer2_strategy.c | 92 ++++++++++++++++++++++++--------------
 sys/vfs/hammer2/hammer2_vfsops.c   | 44 ++++--------------
 6 files changed, 111 insertions(+), 115 deletions(-)

DragonFly BSD source repository

More information about the Commits mailing list