Author: kib
Date: Sun Dec  1 15:59:04 2019
New Revision: 355262
URL: https://svnweb.freebsd.org/changeset/base/355262

Log:
  MFC r355061:
  tmpfs: resolve deadlock between rename and unmount.

Modified:
  stable/11/sys/fs/tmpfs/tmpfs_vnops.c
Directory Properties:
  stable/11/   (props changed)

Modified: stable/11/sys/fs/tmpfs/tmpfs_vnops.c
==============================================================================
--- stable/11/sys/fs/tmpfs/tmpfs_vnops.c        Sun Dec  1 15:29:48 2019        
(r355261)
+++ stable/11/sys/fs/tmpfs/tmpfs_vnops.c        Sun Dec  1 15:59:04 2019        
(r355262)
@@ -786,7 +786,6 @@ tmpfs_rename(struct vop_rename_args *v)
        struct vnode *tdvp = v->a_tdvp;
        struct vnode *tvp = v->a_tvp;
        struct componentname *tcnp = v->a_tcnp;
-       struct mount *mp = NULL;
        char *newname;
        struct tmpfs_dirent *de;
        struct tmpfs_mount *tmp;
@@ -823,18 +822,10 @@ tmpfs_rename(struct vop_rename_args *v)
         */
        if (fdvp != tdvp && fdvp != tvp) {
                if (vn_lock(fdvp, LK_EXCLUSIVE | LK_NOWAIT) != 0) {
-                       mp = tdvp->v_mount;
-                       error = vfs_busy(mp, 0);
-                       if (error != 0) {
-                               mp = NULL;
-                               goto out;
-                       }
                        error = tmpfs_rename_relock(fdvp, &fvp, tdvp, &tvp,
                            fcnp, tcnp);
-                       if (error != 0) {
-                               vfs_unbusy(mp);
+                       if (error != 0)
                                return (error);
-                       }
                        ASSERT_VOP_ELOCKED(fdvp,
                            "tmpfs_rename: fdvp not locked");
                        ASSERT_VOP_ELOCKED(tdvp,
@@ -1077,9 +1068,6 @@ out:
        /* Release source nodes. */
        vrele(fdvp);
        vrele(fvp);
-
-       if (mp != NULL)
-               vfs_unbusy(mp);
 
        return (error);
 }
_______________________________________________
[email protected] mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "[email protected]"

Reply via email to