mirror of
https://git.openafs.org/openafs.git
synced 2025-02-01 14:07:39 +00:00
discon remove dirty vcaches from queue when discarding
the discardall loop was not dequeueing vcaches, meaning we would loop. caught by Simon Wilkinson Change-Id: I80256ef5f91d7030e0cb11e78a79f137a217a29a Reviewed-on: http://gerrit.openafs.org/2513 Reviewed-by: Derrick Brashear <shadow@dementia.org> Tested-by: Derrick Brashear <shadow@dementia.org>
This commit is contained in:
parent
6d0b97c7ac
commit
7556326e01
@ -1338,14 +1338,15 @@ afs_DisconDiscardAll(afs_ucred_t *acred)
|
||||
ObtainWriteLock(&afs_disconDirtyLock, 717);
|
||||
while (!QEmpty(&afs_disconDirty)) {
|
||||
tvc = QEntry(QPrev(&afs_disconDirty), struct vcache, dirtyq);
|
||||
QRemove(&tvc->dirtyq);
|
||||
ReleaseWriteLock(&afs_disconDirtyLock);
|
||||
|
||||
ObtainWriteLock(&tvc->lock, 718);
|
||||
afs_ResetVCache(tvc, acred);
|
||||
tvc->f.truncPos = AFS_NOTRUNC;
|
||||
ReleaseWriteLock(&tvc->lock);
|
||||
afs_PutVCache(tvc);
|
||||
ObtainWriteLock(&afs_disconDirtyLock, 719);
|
||||
afs_PutVCache(tvc);
|
||||
}
|
||||
|
||||
afs_DisconDiscardAllShadows(1, acred);
|
||||
|
Loading…
x
Reference in New Issue
Block a user