FBSD: Drop afs_xvcache for vgone()

For FreeBSD, osi_TryEvictVCache was calling vgone() without dropping
afs_xvcache. Prior to aad83a30a8, this
is what osi_TryEvictVCache did, and since the 'slept' pointer
represents whether we dropped xvcache (not whether we dropped glock),
it seems like this is the intention of the code.

Change-Id: Icb8cc86d972d7ca717bd91e250771d90931e1ba7
Reviewed-on: http://gerrit.openafs.org/7434
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
Tested-by: BuildBot <buildbot@rampaginggeek.com>
This commit is contained in:
Andrew Deason 2012-05-20 17:20:54 -05:00 committed by Benjamin Kaduk
parent b656710d30
commit c09785aa03

View File

@ -37,7 +37,10 @@ osi_TryEvictVCache(struct vcache *avc, int *slept, int defersleep)
/* must hold the vnode before calling vgone()
* This code largely copied from vfs_subr.c:vlrureclaim() */
vholdl(vp);
ReleaseWriteLock(&afs_xvcache);
AFS_GUNLOCK();
*slept = 1;
/* use the interlock while locking, so no one else can DOOM this */
vn_lock(vp, LK_INTERLOCK|LK_EXCLUSIVE|LK_RETRY);
@ -46,6 +49,7 @@ osi_TryEvictVCache(struct vcache *avc, int *slept, int defersleep)
vdrop(vp);
AFS_GLOCK();
ObtainWriteLock(&afs_xvcache, 340);
return 1;
}