git: hammer2 - Redo refactor code, fix races, add assertions

Matthew Dillon dillon at crater.dragonflybsd.org
Sat Sep 28 23:36:42 PDT 2013


commit 294fa5f98cf8540c6be7dc17ae6d8f766846f89e
Author: Matthew Dillon <dillon at apollo.backplane.com>
Date:   Sat Sep 28 23:30:11 2013 -0700

    hammer2 - Redo refactor code, fix races, add assertions
    
    * Redo the refactor code which is used to detect when a chain
      has been delete-duplicated so the caller can translate a stale
      chain pointer into an up-to-date chain pointer.
    
      The new code uses a simple chain flag, HAMMER2_CHAIN_DUPLICATED,
      to flag that the original chain is now stale.  The old code was
      unnecessarily complex.
    
    * Close several holes in the hardlink code where stale chains
      were improperly being used as starting points for modifications,
      resulting in filesystem corruption.
    
    * Assert the a delete-duplicate is not performed on a stale chain.

Summary of changes:
 sys/vfs/hammer2/hammer2.h       |  27 +---------
 sys/vfs/hammer2/hammer2_chain.c |  48 +++++++++++++----
 sys/vfs/hammer2/hammer2_inode.c | 113 +++++++++++++++++-----------------------
 3 files changed, 89 insertions(+), 99 deletions(-)

http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/294fa5f98cf8540c6be7dc17ae6d8f766846f89e


-- 
DragonFly BSD source repository


More information about the Commits mailing list