git: hammer2 - Stabilization pass

Matthew Dillon dillon at
Mon Jun 20 22:38:31 PDT 2016

commit 92e2ca6e34de0686c34f574929b423764f580f9d
Author: Matthew Dillon <dillon at>
Date:   Mon Jun 20 22:25:50 2016 -0700

    hammer2 - Stabilization pass
    * Fix incorrect ip->meta.iparent initializations that were messing up
      NFS.  These fixes are primarily in the hammer2_inode_create() path.
      The 'dip' passed in is not the correct inode to retrieve ip->meta.inum
      from for the new inode's iparent.  Pass a second inode indicating the
      proper parent directory linkage for iparent.
    * Remove ip->pip entirely.  Since the actual file/directory inodes are
      no longer heirarchical this field only creates confusion.  The two
      places where we really need it can simply use ip->meta.iparent.
      Also clean-out a considerable amount of code that previously dealt with
      ip->pip linkages and adjustments.
    * Do not try to drop data on a 1->0 transition failure, this can race
      increments and cause the data to be improperly dropped.
    * Do not try to drop data on lockcnt == 0 unless persist_refs is also 0.
      Fixes several SMP races where chain->data was being lost improperly.
    * Cleanup the APIs for recent changes in how inodes work.
    * Now passes buildworld test with /usr/src and /usr/obj mounted with NFS
      from a hammer2 volume.

Summary of changes:
 sys/vfs/hammer2/hammer2.h        |  13 +--
 sys/vfs/hammer2/hammer2_chain.c  |  85 +++++----------
 sys/vfs/hammer2/hammer2_inode.c  | 223 +++++----------------------------------
 sys/vfs/hammer2/hammer2_ioctl.c  |   3 +-
 sys/vfs/hammer2/hammer2_vfsops.c |  18 ++--
 sys/vfs/hammer2/hammer2_vnops.c  |  62 ++++-------
 sys/vfs/hammer2/hammer2_xops.c   |  52 +++++----
 7 files changed, 126 insertions(+), 330 deletions(-)

DragonFly BSD source repository

More information about the Commits mailing list