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
_______________________________________________
svn-src-stable-9@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-stable-9
To unsubscribe, send any mail to "svn-src-stable-9-unsubscr...@freebsd.org"

Reply via email to