DragonFly BSD
DragonFly commits List (threaded) for 2012-12
[Date Prev][Date Next]  [Thread Prev][Thread Next]  [Date Index][Thread Index]

git: hammer2 - redo the flush collision handling

From: Matthew Dillon <dillon@xxxxxxxxxxxxxxxxxxxxxxx>
Date: Thu, 13 Dec 2012 15:34:00 -0800 (PST)

commit 5f6853dfb2a795dd65d343b017f9c34c7cfb248d
Author: Matthew Dillon <dillon@apollo.backplane.com>
Date:   Thu Dec 13 15:26:28 2012 -0800

    hammer2 - redo the flush collision handling
      flag now indicates a chain has been deleted (as in unlink, rmdir, truncate,
      etc) but could not be removed due to a conflicting flush.
      DELETED means something different from dropped chains with 0 refs which
      wind up sticking around due to the lastdrop code not being able to
      acquire a lock on the parent or colliding with a flush.  0-ref chains
      can be considered to cache clean media state when it comes down to it.
      (modified chains have a ref and so don't hit the lastdrop code).
    * The flush code is now able to reliably unlock the chain parent when
      processing a child.
    * Clean up a number of flush cases.
    * Began to add error handling in the hammer2_chain_create() path.  The path
      now handles EAGAIN errors when insertions would collide with a flush.
      (The wait/retry code is currently just a sleep/retry).
    * Removed the MAYDELETE junk.  It was too junky.

Summary of changes:
 sys/vfs/hammer2/hammer2.h       |   16 +-
 sys/vfs/hammer2/hammer2_chain.c |  443 +++++++++++++++++++++------------------
 sys/vfs/hammer2/hammer2_inode.c |   70 +++++--
 sys/vfs/hammer2/hammer2_vnops.c |   41 +++-
 4 files changed, 323 insertions(+), 247 deletions(-)


DragonFly BSD source repository

[Date Prev][Date Next]  [Thread Prev][Thread Next]  [Date Index][Thread Index]