Author: mjg
Date: Mon Aug 10 10:35:47 2020
New Revision: 364067
URL: https://svnweb.freebsd.org/changeset/base/364067

Log:
  devfs: use vget_prep/vget_finish
  
  Tested by:    pho

Modified:
  head/sys/fs/devfs/devfs_vnops.c

Modified: head/sys/fs/devfs/devfs_vnops.c
==============================================================================
--- head/sys/fs/devfs/devfs_vnops.c     Mon Aug 10 10:35:18 2020        
(r364066)
+++ head/sys/fs/devfs/devfs_vnops.c     Mon Aug 10 10:35:47 2020        
(r364067)
@@ -420,6 +420,7 @@ devfs_allocv(struct devfs_dirent *de, struct mount *mp
        struct cdev *dev;
        struct devfs_mount *dmp;
        struct cdevsw *dsw;
+       enum vgetstate vs;
 
        dmp = VFSTODEVFS(mp);
        if (de->de_flags & DE_DOOMED) {
@@ -432,10 +433,10 @@ loop:
        mtx_lock(&devfs_de_interlock);
        vp = de->de_vnode;
        if (vp != NULL) {
-               VI_LOCK(vp);
+               vs = vget_prep(vp);
                mtx_unlock(&devfs_de_interlock);
                sx_xunlock(&dmp->dm_lock);
-               vget(vp, lockmode | LK_INTERLOCK | LK_RETRY, curthread);
+               vget_finish(vp, lockmode | LK_RETRY, vs);
                sx_xlock(&dmp->dm_lock);
                if (devfs_allocv_drop_refs(0, dmp, de)) {
                        vput(vp);
@@ -1492,13 +1493,14 @@ devfs_revoke(struct vop_revoke_args *ap)
        struct cdev *dev;
        struct cdev_priv *cdp;
        struct devfs_dirent *de;
+       enum vgetstate vs;
        u_int i;
 
        KASSERT((ap->a_flags & REVOKEALL) != 0, ("devfs_revoke !REVOKEALL"));
 
        dev = vp->v_rdev;
        cdp = cdev2priv(dev);
- 
+
        dev_lock();
        cdp->cdp_inuse++;
        dev_unlock();
@@ -1521,17 +1523,16 @@ devfs_revoke(struct vop_revoke_args *ap)
                        vp2 = de->de_vnode;
                        if (vp2 != NULL) {
                                dev_unlock();
-                               VI_LOCK(vp2);
+                               vs = vget_prep(vp2);
                                mtx_unlock(&devfs_de_interlock);
-                               if (vget(vp2, LK_EXCLUSIVE | LK_INTERLOCK,
-                                   curthread))
+                               if (vget_finish(vp2, LK_EXCLUSIVE, vs) != 0)
                                        goto loop;
                                vhold(vp2);
                                vgone(vp2);
                                vdrop(vp2);
                                vput(vp2);
                                break;
-                       } 
+                       }
                }
                if (vp2 != NULL) {
                        continue;
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to