openbsd-20040325
authorJim Rees <rees@umich.edu>
Thu, 25 Mar 2004 17:04:44 +0000 (17:04 +0000)
committerJim Rees <rees@umich.edu>
Thu, 25 Mar 2004 17:04:44 +0000 (17:04 +0000)
go back to using afs_vget instead of VREF for VN_HOLD
in afs_vget, only insert vnode in mount queue if it came off freelist

src/afs/OBSD/osi_machdep.h
src/afs/OBSD/osi_vfsops.c

index 68acc51..4c45627 100644 (file)
@@ -41,8 +41,8 @@ extern struct simplelock afs_rxglobal_lock;
 
 /* vnode */
 #define SetAfsVnode(vn)                /* nothing; done in getnewvnode() */
-#define        IsAfsVnode(vn)  ((vn)->v_op == afs_vnodeop_p)
-#define VN_HOLD(vp)    VREF(vp)
+#define IsAfsVnode(vn) ((vn)->v_op == afs_vnodeop_p)
+#define VN_HOLD(vp)    afs_vget((vp), 0)
 #define VN_RELE(vp)    vrele(vp)
 #define osi_vnhold(avc, r) afs_vget(AFSTOV(avc), 0)
 #define va_nodeid      va_fileid
index 5b34edb..c059515 100644 (file)
@@ -405,8 +405,10 @@ afs_vget(vp, lfl)
        panic("afs_vget");
     }
     error = vget(vp, lfl, curproc);
-    if (!error)
-       insmntque(vp, afs_globalVFS);   /* take off free list */
+    if (!error && vp->v_usecount == 1) {
+       /* vget() took it off the freelist; put it on our mount queue */
+       insmntque(vp, afs_globalVFS);
+    }
     return error;
 }