git: hammer2 - Major restructuring, part 4/several

Matthew Dillon dillon at crater.dragonflybsd.org
Fri May 3 01:34:37 PDT 2013


commit 9797e933b125aaafa99bf816ad3e1c9e0143395f
Author: Matthew Dillon <dillon at apollo.backplane.com>
Date:   Fri May 3 01:28:00 2013 -0700

    hammer2 - Major restructuring, part 4/several
    
    * Add inumber -> inode structure tracking and lookup.  This is needed to
      ensure that only a single inode structure be used to track multiple
      hardlinks to the same place.
    
    * Continue stabilization.  Remove modify_tid/delete_tid checks in the
      flush code and (for now) only flush along the live path.
    
      Refactor held chains when creating new chains.  The creation of a new
      chain can move around existing chains, causing the held chain to be
      marked deleted.
    
      When a hardlink is consolidated in a parent directory the source chain
      used in the duplication is not deleted.  Numerous chain->duplink
      handling code was assuming that the source was always deleted.  Fix
      that.
    
    * The shared inode lock now refactors ip->chain (the exclusive inode lock
      already did so).
    
    * Fix most ref-counting of the chain structure, fixing most of the memory
      leakage issues on unmount.
    
    * There are still some issues with small files not inheriting their data
      on duplication.  cpdup /usr/share works but a significant number of
      small files lose their data references on re-mount.

Summary of changes:
 sys/vfs/hammer2/hammer2.h        |  30 ++--
 sys/vfs/hammer2/hammer2_ccms.c   |   9 +-
 sys/vfs/hammer2/hammer2_ccms.h   |   3 +-
 sys/vfs/hammer2/hammer2_chain.c  | 162 +++++++++++--------
 sys/vfs/hammer2/hammer2_flush.c  | 130 +++++++++++++--
 sys/vfs/hammer2/hammer2_inode.c  | 341 ++++++++++++++++++++++++++-------------
 sys/vfs/hammer2/hammer2_ioctl.c  |   3 +-
 sys/vfs/hammer2/hammer2_subr.c   |  43 ++++-
 sys/vfs/hammer2/hammer2_vfsops.c |  43 ++++-
 sys/vfs/hammer2/hammer2_vnops.c  |  36 +++--
 10 files changed, 567 insertions(+), 233 deletions(-)

http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/9797e933b125aaafa99bf816ad3e1c9e0143395f


-- 
DragonFly BSD source repository



More information about the Commits mailing list