From 02991c3b70950049a157231df29cdf6669095e50 Mon Sep 17 00:00:00 2001 From: Jim Rees Date: Thu, 25 Mar 2004 17:04:44 +0000 Subject: [PATCH] openbsd-20040325 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 | 4 ++-- src/afs/OBSD/osi_vfsops.c | 6 ++++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/afs/OBSD/osi_machdep.h b/src/afs/OBSD/osi_machdep.h index 68acc513e..4c456271a 100644 --- a/src/afs/OBSD/osi_machdep.h +++ b/src/afs/OBSD/osi_machdep.h @@ -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 diff --git a/src/afs/OBSD/osi_vfsops.c b/src/afs/OBSD/osi_vfsops.c index 5b34edb7f..c0595152a 100644 --- a/src/afs/OBSD/osi_vfsops.c +++ b/src/afs/OBSD/osi_vfsops.c @@ -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; } -- 2.39.5