svn commit: r298534 - in stable/9/sys/cddl: compat/opensolaris/sys contrib/opensolaris/uts/common/fs contrib/opensolaris/uts/common/fs/zfs
Andriy Gapon
avg at FreeBSD.org
Sun Apr 24 08:45:45 UTC 2016
Author: avg
Date: Sun Apr 24 08:45:43 2016
New Revision: 298534
URL: https://svnweb.freebsd.org/changeset/base/298534
Log:
MFC r297513: remove emulation of VFS_HOLD and VFS_RELE from opensolaris compat
Modified:
stable/9/sys/cddl/compat/opensolaris/sys/vfs.h
stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/gfs.c
stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c
stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c
Directory Properties:
stable/9/sys/ (props changed)
stable/9/sys/cddl/contrib/opensolaris/ (props changed)
Modified: stable/9/sys/cddl/compat/opensolaris/sys/vfs.h
==============================================================================
--- stable/9/sys/cddl/compat/opensolaris/sys/vfs.h Sun Apr 24 08:39:55 2016 (r298533)
+++ stable/9/sys/cddl/compat/opensolaris/sys/vfs.h Sun Apr 24 08:45:43 2016 (r298534)
@@ -54,17 +54,6 @@ typedef struct mount vfs_t;
#define VFS_NOSETUID MNT_NOSUID
#define VFS_NOEXEC MNT_NOEXEC
-#define VFS_HOLD(vfsp) do { \
- MNT_ILOCK(vfsp); \
- MNT_REF(vfsp); \
- MNT_IUNLOCK(vfsp); \
-} while (0)
-#define VFS_RELE(vfsp) do { \
- MNT_ILOCK(vfsp); \
- MNT_REL(vfsp); \
- MNT_IUNLOCK(vfsp); \
-} while (0)
-
#define fs_vscan(vp, cr, async) (0)
#define VROOT VV_ROOT
Modified: stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/gfs.c
==============================================================================
--- stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/gfs.c Sun Apr 24 08:39:55 2016 (r298533)
+++ stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/gfs.c Sun Apr 24 08:45:43 2016 (r298534)
@@ -583,7 +583,9 @@ gfs_root_create(size_t size, vfs_t *vfsp
{
vnode_t *vp;
+#ifdef illumos
VFS_HOLD(vfsp);
+#endif
vp = gfs_dir_create(size, NULL, vfsp, ops, entries, inode_cb,
maxlen, readdir_cb, lookup_cb);
/* Manually set the inode */
@@ -694,7 +696,9 @@ found:
vn_lock(vp, LK_EXCLUSIVE | LK_RETRY);
} else {
ASSERT(vp->v_vfsp != NULL);
+#ifdef illumos
VFS_RELE(vp->v_vfsp);
+#endif
}
#ifdef TODO
if (vp->v_flag & V_XATTRDIR)
Modified: stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c
==============================================================================
--- stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c Sun Apr 24 08:39:55 2016 (r298533)
+++ stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c Sun Apr 24 08:45:43 2016 (r298534)
@@ -1441,7 +1441,14 @@ getzfsvfs(const char *dsname, zfsvfs_t *
mutex_enter(&os->os_user_ptr_lock);
*zfvp = dmu_objset_get_user(os);
if (*zfvp) {
+#ifdef illumos
VFS_HOLD((*zfvp)->z_vfs);
+#else
+ if (vfs_busy((*zfvp)->z_vfs, 0) != 0) {
+ *zfvp = NULL;
+ error = SET_ERROR(ESRCH);
+ }
+#endif
} else {
error = SET_ERROR(ESRCH);
}
@@ -1485,7 +1492,11 @@ zfsvfs_rele(zfsvfs_t *zfsvfs, void *tag)
rrw_exit(&zfsvfs->z_teardown_lock, tag);
if (zfsvfs->z_vfs) {
+#ifdef illumos
VFS_RELE(zfsvfs->z_vfs);
+#else
+ vfs_unbusy(zfsvfs->z_vfs);
+#endif
} else {
dmu_objset_disown(zfsvfs->z_os, zfsvfs);
zfsvfs_free(zfsvfs);
@@ -3049,11 +3060,13 @@ zfs_get_vfs(const char *resource)
mtx_lock(&mountlist_mtx);
TAILQ_FOREACH(vfsp, &mountlist, mnt_list) {
if (strcmp(refstr_value(vfsp->vfs_resource), resource) == 0) {
- VFS_HOLD(vfsp);
+ if (vfs_busy(vfsp, MBF_MNTLSTLOCK) != 0)
+ vfsp = NULL;
break;
}
}
- mtx_unlock(&mountlist_mtx);
+ if (vfsp == NULL)
+ mtx_unlock(&mountlist_mtx);
return (vfsp);
}
@@ -3506,7 +3519,11 @@ zfs_unmount_snap(const char *snapname)
ASSERT(!dsl_pool_config_held(dmu_objset_pool(zfsvfs->z_os)));
err = vn_vfswlock(vfsp->vfs_vnodecovered);
+#ifdef illumos
VFS_RELE(vfsp);
+#else
+ vfs_unbusy(vfsp);
+#endif
if (err != 0)
return (SET_ERROR(err));
@@ -3733,7 +3750,11 @@ zfs_ioc_rollback(const char *fsname, nvl
resume_err = zfs_resume_fs(zfsvfs, fsname);
error = error ? error : resume_err;
}
+#ifdef illumos
VFS_RELE(zfsvfs->z_vfs);
+#else
+ vfs_unbusy(zfsvfs->z_vfs);
+#endif
} else {
error = dsl_dataset_rollback(fsname, NULL, outnvl);
}
@@ -4273,7 +4294,11 @@ zfs_ioc_recv(zfs_cmd_t *zc)
if (error == 0)
error = zfs_resume_fs(zfsvfs, tofs);
error = error ? error : end_err;
+#ifdef illumos
VFS_RELE(zfsvfs->z_vfs);
+#else
+ vfs_unbusy(zfsvfs->z_vfs);
+#endif
} else {
error = dmu_recv_end(&drc, NULL);
}
@@ -4775,7 +4800,11 @@ zfs_ioc_userspace_upgrade(zfs_cmd_t *zc)
}
if (error == 0)
error = dmu_objset_userspace_upgrade(zfsvfs->z_os);
+#ifdef illumos
VFS_RELE(zfsvfs->z_vfs);
+#else
+ vfs_unbusy(zfsvfs->z_vfs);
+#endif
} else {
/* XXX kind of reading contents without owning */
error = dmu_objset_hold(zc->zc_name, FTAG, &os);
Modified: stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c
==============================================================================
--- stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c Sun Apr 24 08:39:55 2016 (r298533)
+++ stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c Sun Apr 24 08:45:43 2016 (r298534)
@@ -741,7 +741,9 @@ zfs_znode_alloc(zfsvfs_t *zfsvfs, dmu_bu
if (vp->v_type != VFIFO)
VN_LOCK_ASHARE(vp);
+#ifdef illumos
VFS_HOLD(zfsvfs->z_vfs);
+#endif
return (zp);
}
@@ -1426,7 +1428,9 @@ zfs_znode_free(znode_t *zp)
kmem_cache_free(znode_cache, zp);
+#ifdef illumos
VFS_RELE(zfsvfs->z_vfs);
+#endif
}
void
More information about the svn-src-stable-9
mailing list