summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c5
-rw-r--r--sys/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c5
2 files changed, 6 insertions, 4 deletions
diff --git a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c
index d2806b9..58dede8 100644
--- a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c
+++ b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c
@@ -68,16 +68,17 @@ static void
znode_pageout_func(dmu_buf_t *dbuf, void *user_ptr)
{
znode_t *zp = user_ptr;
- vnode_t *vp = ZTOV(zp);
+ vnode_t *vp;
mutex_enter(&zp->z_lock);
+ vp = ZTOV(zp);
if (vp == NULL) {
mutex_exit(&zp->z_lock);
zfs_znode_free(zp);
} else if (vp->v_count == 0) {
ZTOV(zp) = NULL;
- mutex_exit(&zp->z_lock);
vhold(vp);
+ mutex_exit(&zp->z_lock);
vn_lock(vp, LK_EXCLUSIVE | LK_RETRY, curthread);
vrecycle(vp, curthread);
VOP_UNLOCK(vp, 0, curthread);
diff --git a/sys/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c b/sys/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c
index d2806b9..58dede8 100644
--- a/sys/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c
+++ b/sys/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c
@@ -68,16 +68,17 @@ static void
znode_pageout_func(dmu_buf_t *dbuf, void *user_ptr)
{
znode_t *zp = user_ptr;
- vnode_t *vp = ZTOV(zp);
+ vnode_t *vp;
mutex_enter(&zp->z_lock);
+ vp = ZTOV(zp);
if (vp == NULL) {
mutex_exit(&zp->z_lock);
zfs_znode_free(zp);
} else if (vp->v_count == 0) {
ZTOV(zp) = NULL;
- mutex_exit(&zp->z_lock);
vhold(vp);
+ mutex_exit(&zp->z_lock);
vn_lock(vp, LK_EXCLUSIVE | LK_RETRY, curthread);
vrecycle(vp, curthread);
VOP_UNLOCK(vp, 0, curthread);
OpenPOWER on IntegriCloud