mirror of
https://git.openafs.org/openafs.git
synced 2025-01-31 21:47:45 +00:00
Windows: AFSExamineVolume drop TreeLock if waiters
After each call to AFSExamineObject drop the ObjectInfoTree.TreeLock if there are threads waiting for access. The garbage collection process should not delay real work. Change-Id: I2bd009d71b534d92d7e1b321b6db2204643e4666 Reviewed-on: http://gerrit.openafs.org/9786 Reviewed-by: Rod Widdowson <rdw@steadingsoftware.com> Tested-by: BuildBot <buildbot@rampaginggeek.com> Reviewed-by: Jeffrey Altman <jaltman@your-file-system.com>
This commit is contained in:
parent
a6037b153d
commit
5952cc139c
@ -1636,6 +1636,15 @@ AFSExamineVolume( IN AFSVolumeCB *pVolumeCB)
|
|||||||
|
|
||||||
AFSExamineObjectInfo( pCurrentObject, bVolumeObject, &bReleaseVolumeTreeLock);
|
AFSExamineObjectInfo( pCurrentObject, bVolumeObject, &bReleaseVolumeTreeLock);
|
||||||
|
|
||||||
|
if ( bReleaseVolumeTreeLock == TRUE &&
|
||||||
|
( ExGetExclusiveWaiterCount( pVolumeCB->ObjectInfoTree.TreeLock) > 0 ||
|
||||||
|
ExGetSharedWaiterCount( pVolumeCB->ObjectInfoTree.TreeLock) > 0))
|
||||||
|
{
|
||||||
|
|
||||||
|
AFSReleaseResource( pVolumeCB->ObjectInfoTree.TreeLock);
|
||||||
|
|
||||||
|
bReleaseVolumeTreeLock = FALSE;
|
||||||
|
}
|
||||||
//
|
//
|
||||||
// The CurrentObject is either destroyed or the reference count has been
|
// The CurrentObject is either destroyed or the reference count has been
|
||||||
// dropped by AFSExamineObjectInfo().
|
// dropped by AFSExamineObjectInfo().
|
||||||
|
Loading…
x
Reference in New Issue
Block a user