svn commit: r364067 - head/sys/fs/devfs

Mateusz Guzik mjg at FreeBSD.org
Mon Aug 10 10:35:48 UTC 2020


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;


More information about the svn-src-all mailing list