git: hammer2 - major simplification 1/many (stabilization B)

Matthew Dillon dillon at crater.dragonflybsd.org
Wed Jul 30 23:06:10 PDT 2014


commit 05dd26e42f0fc661844b6dfa3c57844a430836f8
Author: Matthew Dillon <dillon at apollo.backplane.com>
Date:   Wed Jul 30 22:50:19 2014 -0700

    hammer2 - major simplification 1/many (stabilization B)
    
    * Change hammer2_cluster_bytes() to hammer2_cluster_need_resize()
      to check for cluster size mismatches against desired.  Used for
      data block resizing.
    
    * Fix panic - allow data blocks to have a chain->dio.  This will be
      the case when compression or other data filters are used.
    
    * Fix null pointer panic - chain->dio can be NULL for data blocks.
    
    * Fix null pointer panic - hlinkp is allowed to be NULL in
      hammer2_unlink_file().
    
    * Do not assert if a hardlink target cannot be found.  There is a known
      bug case when a directory is moved to another part of the topology
      where underlying hardlinks can get lost.  kprintf() instead.
    
    * Fix inode deadlock, add missing inode unlock in hammer2_hardlink_find().
    
    * Remove OBJTYPE_HARDLINK tests from hammer2_inode_lock_*().  It is no
      longer possible for an inode's chain to point to a hardlink pointer,
      it will always point to the hardlink target.
    
    * Add some lock count tracking to the VOPs to catch left over locks on
      return.  (Note that read-ahead operations mess up the lock count because
      the shared lock is inherited by the async op, so lock count tracking
      is not done in code which handles logical file data).
    
    * Hammer2 survives cpdup, blogbench fsx, fsstress

Summary of changes:
 sys/vfs/hammer2/hammer2.h         |  7 ++-
 sys/vfs/hammer2/hammer2_ccms.c    |  6 +++
 sys/vfs/hammer2/hammer2_chain.c   | 38 ++++++++++------
 sys/vfs/hammer2/hammer2_cluster.c | 17 +++++--
 sys/vfs/hammer2/hammer2_flush.c   |  2 +-
 sys/vfs/hammer2/hammer2_inode.c   | 84 ++++++++++++++++++++++++----------
 sys/vfs/hammer2/hammer2_vfsops.c  | 12 ++++-
 sys/vfs/hammer2/hammer2_vnops.c   | 96 ++++++++++++++++++++++++++++++++++-----
 8 files changed, 203 insertions(+), 59 deletions(-)

http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/05dd26e42f0fc661844b6dfa3c57844a430836f8


-- 
DragonFly BSD source repository



More information about the Commits mailing list