diff options
author | pjd <pjd@FreeBSD.org> | 2009-08-17 09:21:39 +0000 |
---|---|---|
committer | pjd <pjd@FreeBSD.org> | 2009-08-17 09:21:39 +0000 |
commit | f46807b28d1a4f33c152d8a8974bf491d134edd2 (patch) | |
tree | 73830843f7dd2a2279870654516c856a83ca115e | |
parent | 3b760e60f0f60676ace81a2e1598b30f5d6e6452 (diff) | |
download | FreeBSD-src-f46807b28d1a4f33c152d8a8974bf491d134edd2.zip FreeBSD-src-f46807b28d1a4f33c152d8a8974bf491d134edd2.tar.gz |
- We need to recycle vnode instead of freeing znode.
Submitted by: avg
- Add missing vnode interlock unlock.
- Remove redundant znode locking.
Approved by: re (kib)
-rw-r--r-- | sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c index 8e2f337..ac75cc2 100644 --- a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c +++ b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c @@ -3709,12 +3709,11 @@ zfs_inactive(vnode_t *vp, cred_t *cr, caller_context_t *ct) * The fs has been unmounted, or we did a * suspend/resume and this file no longer exists. */ - mutex_enter(&zp->z_lock); VI_LOCK(vp); vp->v_count = 0; /* count arrives as 1 */ - mutex_exit(&zp->z_lock); + VI_UNLOCK(vp); + vrecycle(vp, curthread); rw_exit(&zfsvfs->z_teardown_inactive_lock); - zfs_znode_free(zp); return; } |