git: hammer2 - Stabilization, fix bulkfree bugs, change 'df' output

Matthew Dillon dillon at
Mon Jun 27 01:46:49 PDT 2016

commit 470dad1426d4d6202ca22e1905cc293e7f8389b2
Author: Matthew Dillon <dillon at>
Date:   Mon Jun 27 01:37:40 2016 -0700

    hammer2 - Stabilization, fix bulkfree bugs, change 'df' output
    * Automatically delete any indirect nodes which become empty.  This is done
      in the flusher.  Verify that a rm -rf cleans everything out.
    * Fix three serious bugs in the bulkfree code.
      (1) A range-check of cbinfo->sstop was using '>' instead of '>=', causing
          a one-element overflow during the scan and potentially corrupting
      (2) The live bitmap pointer must be reloaded after calling
          hammer2_chain_modify()!  The old pointer points to a buffer
          which must remain clean, or worse points to a buffer completely
          unrelated to the hammer2 filesystem.
      (3) We were zeroing the temporary bmap, but it actually needs to be
          initialized properly (particularly its reserved areas).  Just
          zeroing it led to reserved areas being improperly marked as
          available for allocation.
    * Validate that the free space counter is recovered properly after a
      rm -rf and bulkfree.
    * Disable the modify_tid test in the bulkfree code for now and go back to
      forcing a flush.
    * Change 'df' reporting.  I was trying to be fancy by compensating for dedup
      to report how big the filesystem would be if nothing were deduped, but it
      just caused confusion.  We now report an unchanging total volume size and
      the actual number of 16KB blocks that are fully free.
    * The 'hammer2 freemap' dump now includes all indices, including those
      associated with reserved areas.

Summary of changes:
 sbin/hammer2/cmd_debug.c           |   2 +
 sys/vfs/hammer2/hammer2_bulkfree.c | 108 +++++++++++++++++++++++++++++--------
 sys/vfs/hammer2/hammer2_chain.c    |  18 +++++--
 sys/vfs/hammer2/hammer2_flush.c    |  22 +++++++-
 sys/vfs/hammer2/hammer2_freemap.c  |  14 ++++-
 sys/vfs/hammer2/hammer2_io.c       |   8 +++
 sys/vfs/hammer2/hammer2_vfsops.c   |  12 +++++
 7 files changed, 155 insertions(+), 29 deletions(-)

DragonFly BSD source repository

More information about the Commits mailing list