summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c5
-rw-r--r--sys/fs/cd9660/cd9660_vfsops.c2
-rw-r--r--sys/fs/udf/udf_vfsops.c5
-rw-r--r--sys/ufs/ffs/ffs_vfsops.c2
4 files changed, 12 insertions, 2 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 740302aa4b41..68ccd78d24c4 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
@@ -566,8 +566,11 @@ zfs_znode_alloc(zfsvfs_t *zfsvfs, dmu_buf_t *db, int blksz)
}
break;
}
- if (vp->v_type != VFIFO)
+ if (vp->v_type != VFIFO) {
+ VI_LOCK(vp);
VN_LOCK_ASHARE(vp);
+ VI_UNLOCK(vp);
+ }
mutex_enter(&zfsvfs->z_znodes_lock);
list_insert_tail(&zfsvfs->z_all_znodes, zp);
diff --git a/sys/fs/cd9660/cd9660_vfsops.c b/sys/fs/cd9660/cd9660_vfsops.c
index e27daf8bb046..b8bc6c6c5e1d 100644
--- a/sys/fs/cd9660/cd9660_vfsops.c
+++ b/sys/fs/cd9660/cd9660_vfsops.c
@@ -814,7 +814,9 @@ cd9660_vget_internal(mp, ino, flags, vpp, relocated, isodir)
vp->v_op = &cd9660_fifoops;
break;
default:
+ VI_LOCK(vp);
VN_LOCK_ASHARE(vp);
+ VI_UNLOCK(vp);
break;
}
diff --git a/sys/fs/udf/udf_vfsops.c b/sys/fs/udf/udf_vfsops.c
index 7be538436ce5..af41043b4ffb 100644
--- a/sys/fs/udf/udf_vfsops.c
+++ b/sys/fs/udf/udf_vfsops.c
@@ -710,8 +710,11 @@ udf_vget(struct mount *mp, ino_t ino, int flags, struct vnode **vpp)
break;
}
- if (vp->v_type != VFIFO)
+ if (vp->v_type != VFIFO) {
+ VI_LOCK(vp);
VN_LOCK_ASHARE(vp);
+ VI_UNLOCK(vp);
+ }
if (ino == udf_getid(&udfmp->root_icb))
vp->v_vflag |= VV_ROOT;
diff --git a/sys/ufs/ffs/ffs_vfsops.c b/sys/ufs/ffs/ffs_vfsops.c
index c099732398fd..aa9f19ac4be6 100644
--- a/sys/ufs/ffs/ffs_vfsops.c
+++ b/sys/ufs/ffs/ffs_vfsops.c
@@ -1577,7 +1577,9 @@ ffs_vgetf(mp, ino, flags, vpp, ffs_flags)
*/
if (vp->v_type != VFIFO) {
/* FFS supports shared locking for all files except fifos. */
+ VI_LOCK(vp);
VN_LOCK_ASHARE(vp);
+ VI_UNLOCK(vp);
}
/*