Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 24 Apr 2016 08:45:44 +0000 (UTC)
From:      Andriy Gapon <avg@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org
Subject:   svn commit: r298534 - in stable/9/sys/cddl: compat/opensolaris/sys contrib/opensolaris/uts/common/fs contrib/opensolaris/uts/common/fs/zfs
Message-ID:  <201604240845.u3O8jigA032624@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201604240845.u3O8jigA032624>