]> git.michaelhowe.org Git - packages/o/openafs.git/commitdiff
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 68acc513ed5a9f2ad292949d12024716d6518d9e..4c456271a10da4357dc3da4b07fc8d1a01f6b89e 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 5b34edb7f82c8d20a5d00514aa7dd0abc7bdfb7c..c0595152aca825b1183e8acaddb7aab79286aef4 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;
 }