mirror of
https://git.openafs.org/openafs.git
synced 2025-01-20 07:51:00 +00:00
Windows: use cm_GetVolume / cm_PutVolume
Instead of locally incrementing and decrementing the cm_volume refCount field use cm_GetVolume and cm_PutVolume. Doing so makes it easier to see if there is an imbalance. Change-Id: Id62e42a74a9b1d9865a00dae177550a93e6e0f08 Reviewed-on: http://gerrit.openafs.org/8345 Tested-by: BuildBot <buildbot@rampaginggeek.com> Reviewed-by: Jeffrey Altman <jaltman@your-file-system.com> Tested-by: Jeffrey Altman <jaltman@your-file-system.com>
This commit is contained in:
parent
2b798792fb
commit
d914034d4c
@ -1229,7 +1229,7 @@ void cm_RefreshVolumes(int lifetime)
|
|||||||
*/
|
*/
|
||||||
lock_ObtainRead(&cm_volumeLock);
|
lock_ObtainRead(&cm_volumeLock);
|
||||||
for (volp = cm_data.allVolumesp; volp; volp=volp->allNextp) {
|
for (volp = cm_data.allVolumesp; volp; volp=volp->allNextp) {
|
||||||
InterlockedIncrement(&volp->refCount);
|
cm_GetVolume(volp);
|
||||||
lock_ReleaseRead(&cm_volumeLock);
|
lock_ReleaseRead(&cm_volumeLock);
|
||||||
|
|
||||||
if (!(volp->flags & CM_VOLUMEFLAG_RESET) ||
|
if (!(volp->flags & CM_VOLUMEFLAG_RESET) ||
|
||||||
@ -1254,8 +1254,7 @@ void cm_RefreshVolumes(int lifetime)
|
|||||||
}
|
}
|
||||||
|
|
||||||
lock_ObtainRead(&cm_volumeLock);
|
lock_ObtainRead(&cm_volumeLock);
|
||||||
refCount = InterlockedDecrement(&volp->refCount);
|
cm_PutVolume(volp);
|
||||||
osi_assertx(refCount >= 0, "cm_volume_t refCount underflow");
|
|
||||||
}
|
}
|
||||||
lock_ReleaseRead(&cm_volumeLock);
|
lock_ReleaseRead(&cm_volumeLock);
|
||||||
}
|
}
|
||||||
@ -1424,12 +1423,11 @@ void cm_CheckOfflineVolumes(void)
|
|||||||
*/
|
*/
|
||||||
if ((volp->qflags & CM_VOLUME_QFLAG_IN_HASH) &&
|
if ((volp->qflags & CM_VOLUME_QFLAG_IN_HASH) &&
|
||||||
!(volp->flags & CM_VOLUMEFLAG_NOEXIST)) {
|
!(volp->flags & CM_VOLUMEFLAG_NOEXIST)) {
|
||||||
InterlockedIncrement(&volp->refCount);
|
cm_GetVolume(volp);
|
||||||
lock_ReleaseRead(&cm_volumeLock);
|
lock_ReleaseRead(&cm_volumeLock);
|
||||||
cm_CheckOfflineVolume(volp, 0);
|
cm_CheckOfflineVolume(volp, 0);
|
||||||
lock_ObtainRead(&cm_volumeLock);
|
lock_ObtainRead(&cm_volumeLock);
|
||||||
refCount = InterlockedDecrement(&volp->refCount);
|
cm_PutVolume(volp);
|
||||||
osi_assertx(refCount >= 0, "cm_volume_t refCount underflow");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
lock_ReleaseRead(&cm_volumeLock);
|
lock_ReleaseRead(&cm_volumeLock);
|
||||||
@ -1554,7 +1552,7 @@ void cm_ChangeRankVolume(cm_server_t *tsp)
|
|||||||
for(volp = cm_data.allVolumesp; volp; volp=volp->allNextp)
|
for(volp = cm_data.allVolumesp; volp; volp=volp->allNextp)
|
||||||
{
|
{
|
||||||
code = 1 ; /* assume that list is unchanged */
|
code = 1 ; /* assume that list is unchanged */
|
||||||
InterlockedIncrement(&volp->refCount);
|
cm_GetVolume(volp);
|
||||||
lock_ReleaseRead(&cm_volumeLock);
|
lock_ReleaseRead(&cm_volumeLock);
|
||||||
lock_ObtainWrite(&volp->rw);
|
lock_ObtainWrite(&volp->rw);
|
||||||
|
|
||||||
@ -1567,8 +1565,7 @@ void cm_ChangeRankVolume(cm_server_t *tsp)
|
|||||||
|
|
||||||
lock_ReleaseWrite(&volp->rw);
|
lock_ReleaseWrite(&volp->rw);
|
||||||
lock_ObtainRead(&cm_volumeLock);
|
lock_ObtainRead(&cm_volumeLock);
|
||||||
refCount = InterlockedDecrement(&volp->refCount);
|
cm_PutVolume(volp);
|
||||||
osi_assertx(refCount >= 0, "cm_volume_t refCount underflow");
|
|
||||||
}
|
}
|
||||||
lock_ReleaseRead(&cm_volumeLock);
|
lock_ReleaseRead(&cm_volumeLock);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user