git: hammer2 - flush sequencing part 8 - stabilization pass

Matthew Dillon dillon at crater.dragonflybsd.org
Sun May 12 20:48:59 PDT 2013


commit 09dd2dfe967a49429e51b8648e17be601a369908
Author: Matthew Dillon <dillon at apollo.backplane.com>
Date:   Sun May 12 20:44:32 2013 -0700

    hammer2 - flush sequencing part 8 - stabilization pass
    
    * On this commit it appears that the cpdup / test is fully validating
      on remount and chain memory leaks are gone.
    
    * Remove a hack when creating a hardlink.  The original directory entry
      is duplicated to create the invisible hardlink target in the common
      parent directory, but the original directory entry is then not deleted.
      Instead I was modifying it (which generally did not cause a delete/duplicate
      sequence) and then changing the inode type to HARDLINK and setting
      the OPFLAG_DIRECTDATA flag.
    
      The problem with this is that the inode's core RBTREE was left intact,
      but as a DIRECTDATA inode the flusher ignores it.  This prevented the
      flusher from clearing the MOVED but on the children and resulted in the
      memory leak.
    
      What I do now is delete/duplicate the original inode, give the duplicate
      a fresh core, and then modify the duplicate instead of the original to be
      the special HARDLINK type w/OPFLAG_DIRECTDATA.  This removes the special
      case.

Summary of changes:
 sys/vfs/hammer2/hammer2.h       |  7 ++++++-
 sys/vfs/hammer2/hammer2_chain.c | 21 ++++++++-------------
 sys/vfs/hammer2/hammer2_flush.c | 19 ++++++++++++++++++-
 sys/vfs/hammer2/hammer2_inode.c |  3 ++-
 4 files changed, 34 insertions(+), 16 deletions(-)

http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/09dd2dfe967a49429e51b8648e17be601a369908


-- 
DragonFly BSD source repository



More information about the Commits mailing list