git: hammer2 - Fix deadlocks, bad assertion, improve flushing.

Matthew Dillon dillon at
Thu Jul 21 22:53:03 PDT 2016

commit 74779181703092463a6f85210dd4fd6e6594ccd6
Author: Matthew Dillon <dillon at>
Date:   Thu Jul 21 22:48:10 2016 -0700

    hammer2 - Fix deadlocks, bad assertion, improve flushing.
    * Fix a deadlock in checkdirempty().  We must release the lock on oparent
      before following a hardlink.  If after re-locking chain->parent != oparent,
      return EAGAIN to the caller.
    * When doing a full filesystem flush, pre-flush the vnodes with a normal
      transaction to try to soak-up all the compression time and avoid stalling
      user process writes for too long once we get inside the formal flush.
    * Fix a flush bug.  Flushing a deleted chain is allowed if it is an inode.

Summary of changes:
 sys/vfs/hammer2/hammer2_chain.c    |  6 ++----
 sys/vfs/hammer2/hammer2_strategy.c |  8 +++++++-
 sys/vfs/hammer2/hammer2_vfsops.c   |  5 +++--
 sys/vfs/hammer2/hammer2_xops.c     | 39 ++++++++++++++++++++++++++++++++++----
 4 files changed, 47 insertions(+), 11 deletions(-)

DragonFly BSD source repository

More information about the Commits mailing list