git: hammer2 - refactor filesystem sync 6/N

Matthew Dillon dillon at
Wed Dec 5 14:29:28 PST 2018

commit d0755e6de31ac9c91167b77bd4334b3c4d060fb6
Author: Matthew Dillon <dillon at>
Date:   Sun Dec 2 12:39:48 2018 -0800

    hammer2 - refactor filesystem sync 6/N
    * Dependency tracking.  Add modest cross-dependency grouping.  This code
      does not track dependencies in a graph.  Instead, it simply groups
      dependent inodes together.  This means that dependency groups can get
      rather large when, for example, lots of files are being created or
      deleted in the same directory.
    * We retain the excellent dynamic inode reordering code for the syncq.
      When the frontend blocks on an inode that is in the syncq, the inode
      will be reordered to the front of the queue to reduce the frontend
      stall time as much as possible.
    * Remove the COPYQ transaction flag and related sequencing.
    * Fix flush sequencing for pmp->iroot.  We must flush iroot's chains with
      HAMMER2_XOP_FSSYNC last.  When iroot is dirty, the out-of-order flush
      of iroot that occurs before the final stage must be run without FSSYNC
      set, otherwise iroot's pmp->pfs_iroot_blocksets[] will not be consistent
      because the remaining inodes in the syncq haven't been flushed yet.
    * Fix a broken syncer speedup conditional.

Summary of changes:
 sys/vfs/hammer2/hammer2.h        |  29 ++++-
 sys/vfs/hammer2/hammer2_flush.c  |  35 ++---
 sys/vfs/hammer2/hammer2_inode.c  | 272 +++++++++++++++++++++------------------
 sys/vfs/hammer2/hammer2_vfsops.c | 158 +++++++++++++++--------
 sys/vfs/hammer2/hammer2_vnops.c  |   6 +-
 5 files changed, 287 insertions(+), 213 deletions(-)

DragonFly BSD source repository

More information about the Commits mailing list