git: hammer2 hammer2 - general stabilization, flusher, mmap, etc

Matthew Dillon dillon at
Fri May 18 17:45:28 PDT 2012

commit 004f88b45de50f4b39b539be43b90529b027b4e5
Author: Matthew Dillon <dillon at>
Date:   Fri May 18 17:19:17 2012 -0700

    hammer2 - general stabilization, flusher, mmap, etc
    * Revamp the flush logic.  Flushes now stage the blockref related to the
      data written out to the media.  Higher level chains save the staged
      blockref instead of the current blockref.
    * This allows flushes to occur concurrent with active modification of the
      topology without having to restart the flush.  Modifications made after
      the flush has started running will remain intact and not be committed
      to media until the next flush (see note).
      NOTE: Currently chain deletions break this, but this is the only issue
    * Fix lost chains during unmount.  Deleted chains can still have the MOVED
      and/or MODIFIED bits set, which add additional refs and prevents them
      from being freed.
      Detect when a chain is being deleted permanently (verses temporarily due
      to a rename) and clean out the bits in question.
      NOTE: Currently deletions are removed from the in-memory topology, which
    	is why the previous NOTE above is still a problem, so we will need
    	to fix this and to retain at least the MOVED for flushes in
    * Fix data corruption related to unflagged chains which wind up not getting
      flushed and also due to a bug in the indirect block management code.
    * Fix a mmap() access failure for cached direct-data (less than 512 bytes).
      nvextendbuf() was not being called for the direct-data case during the
    * Buildworld with a HAMMER2 /usr/obj now succeeds.
    * 'hammer2 pfs-create <label>' now defaults to a pfstype of MASTER,
      instead of requiring that the pfstype always be specified.

Summary of changes:
 sbin/hammer2/cmd_pfs.c            |    6 +-
 sys/vfs/hammer2/hammer2.h         |   17 ++-
 sys/vfs/hammer2/hammer2_chain.c   |  421 +++++++++++++++++++------------------
 sys/vfs/hammer2/hammer2_freemap.c |   63 +++++-
 sys/vfs/hammer2/hammer2_inode.c   |   69 ++++--
 sys/vfs/hammer2/hammer2_ioctl.c   |    3 +-
 sys/vfs/hammer2/hammer2_subr.c    |    4 +-
 sys/vfs/hammer2/hammer2_vfsops.c  |    7 +-
 sys/vfs/hammer2/hammer2_vnops.c   |   48 +++--
 9 files changed, 374 insertions(+), 264 deletions(-)

DragonFly BSD source repository

More information about the Commits mailing list