Always hold lock when accessing free_disk_space

Slightly reorder locks to avoid double locking.  Found via
ThreadSanitizer.
This commit is contained in:
Andrew Gaul
2019-07-29 15:23:57 -07:00
parent 80972aa33d
commit 5b15c7c4e9
2 changed files with 9 additions and 2 deletions

View File

@ -1986,8 +1986,15 @@ bool FdManager::CheckCacheDirExist()
return true;
}
off_t FdManager::GetEnsureFreeDiskSpace()
{
AutoLock auto_lock(&FdManager::reserved_diskspace_lock);
return FdManager::free_disk_space;
}
off_t FdManager::SetEnsureFreeDiskSpace(off_t size)
{
AutoLock auto_lock(&FdManager::reserved_diskspace_lock);
off_t old = FdManager::free_disk_space;
FdManager::free_disk_space = size;
return old;
@ -2342,8 +2349,8 @@ void FdManager::CleanupCacheDirInternal(const std::string &path)
bool FdManager::ReserveDiskSpace(off_t size)
{
AutoLock auto_lock(&FdManager::reserved_diskspace_lock);
if(IsSafeDiskSpace(NULL, size)){
AutoLock auto_lock(&FdManager::reserved_diskspace_lock);
free_disk_space += size;
return true;
}