diff --git a/src/cache_node.cpp b/src/cache_node.cpp index b3fc3cb..8cf8cb4 100644 --- a/src/cache_node.cpp +++ b/src/cache_node.cpp @@ -1176,6 +1176,8 @@ bool DirStatCache::IsExpiredHasLock() bool DirStatCache::TruncateCacheHasLock() { + bool isTruncated = false; + // check self if(StatCacheNode::IsExpiredHasLock()){ // [NOTE] @@ -1186,22 +1188,20 @@ bool DirStatCache::TruncateCacheHasLock() return false; } } - bool isTruncated = false; // Check all children std::lock_guard dircachelock(dir_cache_lock); for(auto iter = children.begin(); iter != children.end(); ){ - std::shared_ptr pDirCache = ConvertStatCacheObject(iter->second); - if(pDirCache){ + if(iter->second->isDirectoryHasLock()){ // [NOTE] // It is checked only if the expire time has passed since the last check. // - if(pDirCache->NeedTruncateProcessing()){ - if(pDirCache->TruncateCacheHasLock()){ + if(iter->second->IsExpireStatCacheTimeHasLock()){ + if(iter->second->TruncateCacheHasLock()){ // Some files and directories under the directory have been deleted. isTruncated = true; - if(pDirCache->IsExpiredHasLock()){ + if(iter->second->IsExpiredHasLock()){ // This child directory is now empty and can be deleted. S3FS_PRN_DBG("Remove stat cache [directory path=%s]", iter->first.c_str());