mirror of
https://git.openafs.org/openafs.git
synced 2025-01-19 15:30:14 +00:00
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:
parent
b656710d30
commit
c09785aa03
@ -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;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user