From 16da2e4ecc54605c10c7b84262f8b99176699144 Mon Sep 17 00:00:00 2001 From: Wannabe Date: Tue, 27 May 2025 18:17:40 +0800 Subject: [PATCH] During the cloning process, repair the scanning small file anomaly. Signed-off-by: Wannabe --- utils/include/b_utils/scan_file_singleton.h | 2 +- utils/src/b_filesystem/b_dir.cpp | 14 ++++++++------ utils/src/b_utils/scan_file_singleton.cpp | 8 ++++---- 3 files changed, 13 insertions(+), 11 deletions(-) diff --git a/utils/include/b_utils/scan_file_singleton.h b/utils/include/b_utils/scan_file_singleton.h index 6fde188d8..a3174279b 100644 --- a/utils/include/b_utils/scan_file_singleton.h +++ b/utils/include/b_utils/scan_file_singleton.h @@ -58,7 +58,7 @@ private: std::map smallFiles_; std::mutex mutexLock_; std::condition_variable waitForFilesAddCv_; - bool isCalculateCompeleted_ = false; + bool isCalculateCompleted_ = false; uint32_t includeSize_ = 0; uint32_t excludeSize_ = 0; }; diff --git a/utils/src/b_filesystem/b_dir.cpp b/utils/src/b_filesystem/b_dir.cpp index b1da1f0e6..3cefa2276 100644 --- a/utils/src/b_filesystem/b_dir.cpp +++ b/utils/src/b_filesystem/b_dir.cpp @@ -63,6 +63,12 @@ static bool IsEmptyDirectory(const string &path) return isEmpty; } +static void InsertSmallFiles(std::map &smallFiles, std::string fileName, size_t size) +{ + ScanFileSingleton::GetInstance().AddSmallFile(fileName, size); + smallFiles.emplace(make_pair(fileName, size)); +} + static tuple, map> GetFile(const string &path, off_t size = -1) { map files; @@ -77,7 +83,9 @@ static tuple, map> GetFile(con } if (sta.st_size <= size) { smallFiles.emplace(make_pair(path, sta.st_size)); + InsertSmallFiles(smallFiles, path, sta.st_size); } else { + ScanFileSingleton::GetInstance().AddBigFile(path, sta); files.try_emplace(path, sta); } return {BError(BError::Codes::OK).GetCode(), files, smallFiles}; @@ -94,12 +102,6 @@ static uint32_t CheckOverLongPath(const string &path) return len; } -static void InsertSmallFiles(std::map &smallFiles, std::string fileName, size_t size) -{ - ScanFileSingleton::GetInstance().AddSmallFile(fileName, size); - smallFiles.emplace(make_pair(fileName, size)); -} - static tuple, map> GetDirFilesDetail(const string &path, bool recursion, off_t size = -1) diff --git a/utils/src/b_utils/scan_file_singleton.cpp b/utils/src/b_utils/scan_file_singleton.cpp index 86fd425ca..8761a4cc3 100644 --- a/utils/src/b_utils/scan_file_singleton.cpp +++ b/utils/src/b_utils/scan_file_singleton.cpp @@ -25,7 +25,7 @@ ScanFileSingleton& ScanFileSingleton::GetInstance() ScanFileSingleton::~ScanFileSingleton() { - isCalculateCompeleted_ = false; + isCalculateCompleted_ = false; } void ScanFileSingleton::AddBigFile(const std::string& key, const struct stat& value) @@ -55,13 +55,13 @@ std::map ScanFileSingleton::GetAllBigFiles() bool ScanFileSingleton::GetCompeletedFlag() { std::lock_guard lock(mutexLock_); - return isCalculateCompeleted_; + return isCalculateCompleted_; } void ScanFileSingleton::SetCompeletedFlag(bool value) { std::lock_guard lock(mutexLock_); - isCalculateCompeleted_ = value; + isCalculateCompleted_ = value; if (value) { waitForFilesAddCv_.notify_all(); } @@ -101,7 +101,7 @@ void ScanFileSingleton::WaitForFiles() { HILOGI("calculate is uncompleted, need to wait"); std::unique_lock lock(mutexLock_); - waitForFilesAddCv_.wait(lock, [this] {return !bigFileQueue_.empty() || isCalculateCompeleted_; }); + waitForFilesAddCv_.wait(lock, [this] {return !bigFileQueue_.empty() || isCalculateCompleted_; }); } } // namespace OHOS::FileManagement::Backup \ No newline at end of file -- Gitee