git: hammer2 - stabilization - blogbench, others

Matthew Dillon dillon at
Tue Sep 1 17:57:01 PDT 2015

commit f9f4459efdc0a337763afd03f208ad8bbb06dc23
Author: Matthew Dillon <dillon at>
Date:   Tue Sep 1 17:50:01 2015 -0700

    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.

Summary of changes:
 sys/vfs/hammer2/hammer2.h          |   3 +
 sys/vfs/hammer2/hammer2_chain.c    | 183 ++++++++++++++++++++++++++-----------
 sys/vfs/hammer2/hammer2_flush.c    |   2 +
 sys/vfs/hammer2/hammer2_inode.c    |  15 +--
 sys/vfs/hammer2/hammer2_strategy.c |   4 +-
 sys/vfs/hammer2/hammer2_thread.c   |  26 ++++--
 sys/vfs/hammer2/hammer2_vfsops.c   |   5 +
 sys/vfs/hammer2/hammer2_xops.c     |  34 ++++---
 8 files changed, 192 insertions(+), 80 deletions(-)

DragonFly BSD source repository

More information about the Commits mailing list