git: hammer2 - Flush asynchronization, bug fixes, stabilization
Matthew Dillon
dillon at crater.dragonflybsd.org
Sat Mar 17 01:31:38 PDT 2018
commit 40498d1c88122d4588f3b021c4ec7c0444b2164b
Author: Matthew Dillon <dillon at apollo.backplane.com>
Date: Tue Mar 13 18:00:44 2018 -0700
hammer2 - Flush asynchronization, bug fixes, stabilization
* Better-asynchronize the flush (sync) code. Generally split flushing
of inodes and flushing of topology above the inodes such that we can
flush the inodes inside a normal transaction.
This leaves only the topology flush in the flush transaction (which
locks out all other modifying transactions). Concurrent read/write/
flush performance is significantly improved.
* Fix numerous bugs in the inode tracking code where the chain topology
under an inode could wind up remaining in a modified state when the
vnode is in a clean state. This could cause hefty 'sync' latency on
clean trees (that had already been flushed).
* Fix numerous bugs in the handling of lost parent links, which occurs
due to locking races primarily when indirect blocks have to be
inserted or deleted.
* Deleted-chain sub-topology tracking had some issues which could lead
to chain's being lost, resulting in malloc complaints on umount.
* Rename a few H2 sysctl variables for readability.
* Adjust the "dumpchain" debugging directive to allow us to trace
the ONFLUSH topology.
Summary of changes:
sbin/hammer2/cmd_debug.c | 4 +-
sbin/hammer2/hammer2.h | 2 +-
sbin/hammer2/main.c | 14 ++--
sys/vfs/hammer2/hammer2.h | 23 ++---
sys/vfs/hammer2/hammer2_chain.c | 167 ++++++++++++++++++-------------------
sys/vfs/hammer2/hammer2_flush.c | 116 ++++++++++++++++++++++++--
sys/vfs/hammer2/hammer2_inode.c | 67 +++++++++++----
sys/vfs/hammer2/hammer2_io.c | 16 ++--
sys/vfs/hammer2/hammer2_ioctl.c | 12 +--
sys/vfs/hammer2/hammer2_strategy.c | 2 +-
sys/vfs/hammer2/hammer2_vfsops.c | 152 +++++++++++++++++++--------------
sys/vfs/hammer2/hammer2_vnops.c | 72 ++++++++++++----
12 files changed, 428 insertions(+), 219 deletions(-)
http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/40498d1c88122d4588f3b021c4ec7c0444b2164b
--
DragonFly BSD source repository
More information about the Commits
mailing list