git: hammer2 - stabilization - Fix a number of bugs revealed by fsx and fsstress.

Matthew Dillon dillon at crater.dragonflybsd.org
Mon Aug 31 20:32:10 PDT 2015


commit 76f85faa70e0e580c2cf46832aaf462e53367731
Author: Matthew Dillon <dillon at apollo.backplane.com>
Date:   Mon Aug 31 20:20:22 2015 -0700

    hammer2 - stabilization - Fix a number of bugs revealed by fsx and fsstress.
    
    * Fix block rewriting against deduped data (dedup_off != 0 in call to
      hammer2_chain_resize()).  It was hitting an assertion due to chain->bytes
      not being properly updated.
    
    * A coarse lock is required on the pfs around any link() or rename() which
      needs to mess with hardlink targets.
    
    * Fix an inode meta.nlinks race between the frontend and the backend.  The
      frontend tracks a master copy of the inode.  The backend must also adjust
      meta.nlinks during link and unlink operations because it reads the field
      to determine if the hardlink target should be removed or not.
    
      This required fixes in hammer2_xop_nlink() and hammer2_xop_nremove() and
      some functional augmentation to hammer2_xop_nlink().
    
    * Leave the target inode locked through the whole rename sequence, the
      hardlink target shifts are just too complex (for now) to be able to rely
      on inode locks.
    
    * Fix an incorrect shared lock in hammer2_xop_nrename() which could result
      in a parent modification being made while held shared instead of exclusive.
    
    * Add debug output for an issue in hammer2_xop_nrename() that has not yet
      been fixed (kprintf... ENOENT).

Summary of changes:
 sys/vfs/hammer2/hammer2.h        |   2 +
 sys/vfs/hammer2/hammer2_chain.c  |   2 +
 sys/vfs/hammer2/hammer2_vfsops.c |   1 +
 sys/vfs/hammer2/hammer2_vnops.c  |  55 +++++++++++-
 sys/vfs/hammer2/hammer2_xops.c   | 180 +++++++++++++++++++++++++++------------
 5 files changed, 183 insertions(+), 57 deletions(-)

http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/76f85faa70e0e580c2cf46832aaf462e53367731


-- 
DragonFly BSD source repository


More information about the Commits mailing list