svn commit: r201406 -
head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs
Xin LI
delphij at FreeBSD.org
Sat Jan 2 23:38:04 UTC 2010
Author: delphij
Date: Sat Jan 2 23:38:03 2010
New Revision: 201406
URL: http://svn.freebsd.org/changeset/base/201406
Log:
Reduce diff against OpenSolaris - move Giant acquire/release to
zfs_znode.c. As a side effect this also eliminates two potential
Giant leaks.
Approved by: pjd
MFC after: 1 month
Modified:
head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_dir.c
head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c
Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_dir.c
==============================================================================
--- head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_dir.c Sat Jan 2 20:36:36 2010 (r201405)
+++ head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_dir.c Sat Jan 2 23:38:03 2010 (r201406)
@@ -557,9 +557,6 @@ zfs_rmnode(znode_t *zp)
dmu_tx_t *tx;
uint64_t acl_obj;
int error;
- int vfslocked;
-
- vfslocked = VFS_LOCK_GIANT(zfsvfs->z_vfs);
ASSERT(zp->z_phys->zp_links == 0);
@@ -593,7 +590,6 @@ zfs_rmnode(znode_t *zp)
*/
zfs_znode_dmu_fini(zp);
zfs_znode_free(zp);
- VFS_UNLOCK_GIANT(vfslocked);
return;
}
}
@@ -666,7 +662,6 @@ zfs_rmnode(znode_t *zp)
out:
if (xzp)
VN_RELE(ZTOV(xzp));
- VFS_UNLOCK_GIANT(vfslocked);
}
static uint64_t
Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c
==============================================================================
--- head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c Sat Jan 2 20:36:36 2010 (r201405)
+++ head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c Sat Jan 2 23:38:03 2010 (r201406)
@@ -1017,6 +1017,7 @@ zfs_zinactive(znode_t *zp)
vnode_t *vp = ZTOV(zp);
zfsvfs_t *zfsvfs = zp->z_zfsvfs;
uint64_t z_id = zp->z_id;
+ int vfslocked;
ASSERT(zp->z_dbuf && zp->z_phys);
@@ -1049,7 +1050,9 @@ zfs_zinactive(znode_t *zp)
ZFS_OBJ_HOLD_EXIT(zfsvfs, z_id);
ASSERT(vp->v_count == 0);
vrecycle(vp, curthread);
+ vfslocked = VFS_LOCK_GIANT(zfsvfs->z_vfs);
zfs_rmnode(zp);
+ VFS_UNLOCK_GIANT(vfslocked);
return;
}
mutex_exit(&zp->z_lock);
More information about the svn-src-all
mailing list