git: hammer2 - Rewrite internal chain algorithms - stabilization

Matthew Dillon dillon at
Fri Sep 27 23:07:45 PDT 2013

commit 51a0d27c7544b989e6e2e6f6c64cbc4cfcb39f0f
Author: Matthew Dillon <dillon at>
Date:   Fri Sep 27 22:57:54 2013 -0700

    hammer2 - Rewrite internal chain algorithms - stabilization
    * Add temporary guards on a few structures for debugging purposes.
    * Verify that blocktables are ordered.
    * live_zero is multi-homed, move it out of the chain_core structure and
      into the chain structure.  Also move the COUNTEDBREFS flag
    * Unlock the spinlock prior to issuing the atomic fetchadd to decrement
      hammer2_core->sharecnt.  Clean up any hanging chain_layer's when freeing
      a core structure.
    * Initialize live_zero to 0 when base is NULL (i.e. if the chain structure
      is in the INITIAL stage).
    * Refactor hammer2_chain_find(), hammer2_base_find(), and add
      hammer2_combined_find().  Fix numerous bugs in the key_next
      calculation and ensure that the combined find returns exhaustion
      if the element it finds is outside the requested range.
    * Close a delete-duplicate race in hammer2_chain_getparent() and
      in hammer2_chain_lookup().  A delete-duplicate could weasle its
      way in during the parent lock transition.

Summary of changes:
 sys/vfs/hammer2/hammer2.h        |  24 +-
 sys/vfs/hammer2/hammer2_chain.c  | 696 ++++++++++++++++++++++-----------------
 sys/vfs/hammer2/hammer2_flush.c  |  13 +-
 sys/vfs/hammer2/hammer2_inode.c  |  14 +-
 sys/vfs/hammer2/hammer2_vfsops.c |   5 +-
 5 files changed, 436 insertions(+), 316 deletions(-)

DragonFly BSD source repository

More information about the Commits mailing list