git: hammer2 - Per-PFS transaction management

Matthew Dillon dillon at
Wed May 20 22:24:05 PDT 2015

commit 9450e8667e9c5fcfbc27c0174c83b4c9a7a42fda
Author: Matthew Dillon <dillon at>
Date:   Wed May 20 22:10:45 2015 -0700

    hammer2 - Per-PFS transaction management
    * Replace the global transaction manager with a per-mount transaction
    * Each media volume's spmp (super-root pfs) also gets its own transaction
    * The Filesystem sync now flushes each PFS associated with the mount,
      and then flushes the super-root for the related physical volumes.
      When flushing the super-root, the flush stops at the PFS transition.
    * Interactions on one mount point no longer stall other mount points on
      the same media.  This also means that freemap updates related to
      other mount points may occur while a flush is occuring on one of them.
      (might have broken recovery here, will fix in another pass).
    * For now keep the syncer interlock vs new modifying operations to ensure
      a stable snapshot.

Summary of changes:
 sys/vfs/hammer2/hammer2.h         |   5 +-
 sys/vfs/hammer2/hammer2_chain.c   |  24 +++++---
 sys/vfs/hammer2/hammer2_cluster.c |   2 +-
 sys/vfs/hammer2/hammer2_flush.c   |  56 +++++++++++--------
 sys/vfs/hammer2/hammer2_vfsops.c  | 113 +++++++++++++++-----------------------
 sys/vfs/hammer2/hammer2_vnops.c   |  10 +---
 6 files changed, 101 insertions(+), 109 deletions(-)

DragonFly BSD source repository

More information about the Commits mailing list