hammer2 - stabilization - blogbench, others
authorMatthew Dillon <dillon@apollo.backplane.com>
Wed, 2 Sep 2015 00:50:01 +0000 (17:50 -0700)
committerMatthew Dillon <dillon@apollo.backplane.com>
Wed, 2 Sep 2015 00:50:01 +0000 (17:50 -0700)
commitf9f4459efdc0a337763afd03f208ad8bbb06dc23
treeddfb105f255a665b6d3ec1f531d7dbd0dda216b0
parentd0e9385d609dcd48637f7ba54b43465f1deb4aba
hammer2 - stabilization - blogbench, others

* Fix some (but not all) issues with lost chains on unmount that show
  up in a kmalloc pool warning.

* Fix a bug in hammer2_chain_create_indirect() which retained a stale
  { base, count } across possible parent chain modifications, resulting
  in corruption and/or a panic.

* Track chain lock counts on a per-thread basis and add some helpful
  assertions in the XOP processing loop.  Also add
  hammer2_chain_push_shared_lock() and hammer2_chain_pull_shared_lock()
  to helpfully transfer ownership of (shared locks only) between threads.

* Add missing cpu_lfence() after fifo read index test.  Ensures that
  the memory load of the chain occurs after the write index change has
  been detected.

* Change the XOP ABI a bit.  hammer2_xop_feed() now replicates the
  shared lock, giving one to the collector and allowing the caller
  to retain its own.  This way the locking state of the chain passed
  to it does not change from the point of view of the caller.

  This also fixes one or two lost chain locks in the XOPs.
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_strategy.c
sys/vfs/hammer2/hammer2_thread.c
sys/vfs/hammer2/hammer2_vfsops.c
sys/vfs/hammer2/hammer2_xops.c