git: hammer2 - Stabilization pass
Matthew Dillon
dillon at crater.dragonflybsd.org
Mon Jun 20 22:38:31 PDT 2016
commit 92e2ca6e34de0686c34f574929b423764f580f9d
Author: Matthew Dillon <dillon at apollo.backplane.com>
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(-)
http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/92e2ca6e34de0686c34f574929b423764f580f9d
--
DragonFly BSD source repository
More information about the Commits
mailing list