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

Matthew Dillon dillon at
Fri Jul 22 22:39:59 PDT 2016

commit d7993ba507efd77d28d3f7aa2c71887a429518bb
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