git: hammer2 - freemap and data check code

Matthew Dillon dillon at
Mon Aug 4 01:20:37 PDT 2014

commit a71db85d9ad6015dbdba1b15106e08ea69fdd67d
Author: Matthew Dillon <dillon at>
Date:   Mon Aug 4 01:11:46 2014 -0700

    hammer2 - freemap and data check code
    * Change the freemap to use 8 sets = ~32 reserved blocks instead of 14 sets.
      Use a straight iterator.  (TODO - must invalidate newer volumes if an older
      volume backup is mounted RW because freemap will become inconsistent).
    * Update the freemap documentation.  Requires more work.
    * MODIFY_OPTDATA can only skip to the end if chain->data is NULL in
      the BREF_TYPE_DATA case.  chain->data might not be NULL if the
      data chain represents a compressed device buffer.
    * Add check code generation and testing.  Currently just kprintf()s a
      warning if the check code does not match.  Implement iscsi crc-32,
      sha-192 (this is sha-256 with the last 64 bits XOR'd into the first),
      and implement check generation and testing for all data, meta-data,
      and the freemap.  For Everything.  64-bit CRCs are not yet implemented.
    * Fix a few cases where the DIO or the chain was not being properly
      dirtied prior to making modifications to the media contents via
      chain->data (this showed up because CRC tests were failing).
    * Cleanup:
      - CHAIN_FORCECOW is no longer used, remove it.
      - Move FLUSH_DEPTH_LIMIT from hammer2.h to hammer2_flush.c.
      - Remove debug structures from the blockref check union.
      - Remove some #if 0'd code that is no longer applicable.

Summary of changes:
 sys/vfs/hammer2/FREEMAP           | 190 ++++++++++++++++++++------------------
 sys/vfs/hammer2/hammer2.h         |  13 ++-
 sys/vfs/hammer2/hammer2_chain.c   | 168 +++++++++++++++++++++++++++++----
 sys/vfs/hammer2/hammer2_disk.h    | 168 ++++++++++++++++-----------------
 sys/vfs/hammer2/hammer2_flush.c   | 109 ++++++----------------
 sys/vfs/hammer2/hammer2_freemap.c |  58 ++++++++----
 sys/vfs/hammer2/hammer2_inode.c   |   5 +-
 sys/vfs/hammer2/hammer2_vfsops.c  |  21 ++++-
 8 files changed, 430 insertions(+), 302 deletions(-)

DragonFly BSD source repository

More information about the Commits mailing list