git: hammer2 - multi-target mount part 2/many

Matthew Dillon dillon at
Sat Mar 29 17:34:14 PDT 2014

commit 504565062f34ec55037ac0cf308fe3562f091460
Author: Matthew Dillon <dillon at>
Date:   Sat Mar 29 17:09:08 2014 -0700

    hammer2 - multi-target mount part 2/many
    * Split media and in-memory tracking of TIDs.  In-memory tracking is
      effectively global, while on-media TIDs are now split into an independent
      domain for each PFS plus one for the super-root and freemap topology.
      Introduces hammer2_xid_t and reformulates some of the TID and XID
    * Refactor the flush code to no longer depend on media modify_tid/mirror_tid
      values during a flush.  In-memory XIDs are used for all flush recursions.
    * Refactor the transaction mechanisms in order to allow XIDs to cover multiple
      TID domains.  For the moment, the transaction management structure is
      global but the code is designed to allow us to have multiple management
      domains in a future commit.
    * Associate a PMP structure with each storage topology's super-root and
      freemap (still a bit rough).
    * Each PFS now accounts for its own inode numbers and transaction ids,
      independent of other PFSs.  This also means that both inode numbers
      and transaction ids are PFS-specific, so multiple storage medias which
      are part of the same PFS will use the PFS-centric tracking rather than
      per-media tracking.
    * Cleanup a few memory leaks and remove some debugging from the chain code.
    * Refactor mount and unmount code to handle the new PFS abstraction.
    * Refactor the volume data lock/unlock/modify mechanics somewhat.

Summary of changes:
 sbin/hammer2/cmd_debug.c           |   4 +-
 sbin/newfs_hammer2/newfs_hammer2.c |  21 +-
 sys/vfs/hammer2/TODO               |   9 +
 sys/vfs/hammer2/hammer2.h          |  89 ++++----
 sys/vfs/hammer2/hammer2_chain.c    | 257 +++++++++++-----------
 sys/vfs/hammer2/hammer2_cluster.c  |  25 ++-
 sys/vfs/hammer2/hammer2_disk.h     |  52 ++---
 sys/vfs/hammer2/hammer2_flush.c    | 389 +++++++++++++++++++---------------
 sys/vfs/hammer2/hammer2_freemap.c  | 109 ++--------
 sys/vfs/hammer2/hammer2_inode.c    |  67 +++---
 sys/vfs/hammer2/hammer2_ioctl.c    |  35 +--
 sys/vfs/hammer2/hammer2_subr.c     |  31 +--
 sys/vfs/hammer2/hammer2_vfsops.c   | 423 +++++++++++++++++++++++++++----------
 sys/vfs/hammer2/hammer2_vnops.c    |  26 +--
 14 files changed, 870 insertions(+), 667 deletions(-)

DragonFly BSD source repository

More information about the Commits mailing list