mirror of
https://git.openafs.org/openafs.git
synced 2025-01-20 07:51:00 +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()
|
/* must hold the vnode before calling vgone()
|
||||||
* This code largely copied from vfs_subr.c:vlrureclaim() */
|
* This code largely copied from vfs_subr.c:vlrureclaim() */
|
||||||
vholdl(vp);
|
vholdl(vp);
|
||||||
|
|
||||||
|
ReleaseWriteLock(&afs_xvcache);
|
||||||
AFS_GUNLOCK();
|
AFS_GUNLOCK();
|
||||||
|
|
||||||
*slept = 1;
|
*slept = 1;
|
||||||
/* use the interlock while locking, so no one else can DOOM this */
|
/* use the interlock while locking, so no one else can DOOM this */
|
||||||
vn_lock(vp, LK_INTERLOCK|LK_EXCLUSIVE|LK_RETRY);
|
vn_lock(vp, LK_INTERLOCK|LK_EXCLUSIVE|LK_RETRY);
|
||||||
@ -46,6 +49,7 @@ osi_TryEvictVCache(struct vcache *avc, int *slept, int defersleep)
|
|||||||
vdrop(vp);
|
vdrop(vp);
|
||||||
|
|
||||||
AFS_GLOCK();
|
AFS_GLOCK();
|
||||||
|
ObtainWriteLock(&afs_xvcache, 340);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user