git: hammer2 - Fix deadlocks, bad assertion, improve flushing.
Matthew Dillon
dillon at crater.dragonflybsd.org
Thu Jul 21 22:53:03 PDT 2016
commit 74779181703092463a6f85210dd4fd6e6594ccd6
Author: Matthew Dillon <dillon at apollo.backplane.com>
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(-)
http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/74779181703092463a6f85210dd4fd6e6594ccd6
--
DragonFly BSD source repository
More information about the Commits
mailing list