hammer2 - Flush asynchronization, bug fixes, stabilization
authorMatthew Dillon <dillon@apollo.backplane.com>
Wed, 14 Mar 2018 01:00:44 +0000 (18:00 -0700)
committerMatthew Dillon <dillon@apollo.backplane.com>
Sat, 17 Mar 2018 08:31:35 +0000 (01:31 -0700)
commit40498d1c88122d4588f3b021c4ec7c0444b2164b
tree04fd65baa5cf19d8a8e999f422fe875d92983f0e
parentc753a10a123b74e3b1d8d9f1468fa41906c0bcbb
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.
12 files changed:
sbin/hammer2/cmd_debug.c
sbin/hammer2/hammer2.h
sbin/hammer2/main.c
sys/vfs/hammer2/hammer2.h
sys/vfs/hammer2/hammer2_chain.c
sys/vfs/hammer2/hammer2_flush.c
sys/vfs/hammer2/hammer2_inode.c
sys/vfs/hammer2/hammer2_io.c
sys/vfs/hammer2/hammer2_ioctl.c
sys/vfs/hammer2/hammer2_strategy.c
sys/vfs/hammer2/hammer2_vfsops.c
sys/vfs/hammer2/hammer2_vnops.c