diff options
author | 2021-03-18 14:21:54 -0700 | |
---|---|---|
committer | 2021-03-18 14:24:21 -0700 | |
commit | 256a1a450402fde4a958c7680600d2c94c7c737e (patch) | |
tree | 97eb9035c7e4c6bf73ca6da717c672dbb229467b /services/incremental/IncrementalService.cpp | |
parent | 463ec227c62975953cd298259b88d640c755d7ca (diff) |
[incfs] Use the new libincfs API for file status checking
libincfs got a new set of functions for checking the file loaded
status, which works more efficiently than getting filled ranges.
Bug: 183067554
Test: atest IncrementalServiceTest
Change-Id: I3b96bf409f1778c5a89e4802e2005197f70ce0cb
Diffstat (limited to 'services/incremental/IncrementalService.cpp')
-rw-r--r-- | services/incremental/IncrementalService.cpp | 27 |
1 files changed, 11 insertions, 16 deletions
diff --git a/services/incremental/IncrementalService.cpp b/services/incremental/IncrementalService.cpp index db70d44d37f6..ebfcc3262ef5 100644 --- a/services/incremental/IncrementalService.cpp +++ b/services/incremental/IncrementalService.cpp @@ -1980,35 +1980,30 @@ int IncrementalService::setFileContent(const IfsMountPtr& ifs, const incfs::File return 0; } -int IncrementalService::isFileFullyLoaded(StorageId storage, std::string_view filePath) const { +incfs::LoadingState IncrementalService::isFileFullyLoaded(StorageId storage, + std::string_view filePath) const { std::unique_lock l(mLock); const auto ifs = getIfsLocked(storage); if (!ifs) { LOG(ERROR) << "isFileFullyLoaded failed, invalid storageId: " << storage; - return -EINVAL; + return incfs::LoadingState(-EINVAL); } const auto storageInfo = ifs->storages.find(storage); if (storageInfo == ifs->storages.end()) { LOG(ERROR) << "isFileFullyLoaded failed, no storage: " << storage; - return -EINVAL; + return incfs::LoadingState(-EINVAL); } l.unlock(); - return isFileFullyLoadedFromPath(*ifs, filePath); + return mIncFs->isFileFullyLoaded(ifs->control, filePath); } -int IncrementalService::isFileFullyLoadedFromPath(const IncFsMount& ifs, - std::string_view filePath) const { - const auto [filledBlocks, totalBlocks] = mIncFs->countFilledBlocks(ifs.control, filePath); - if (filledBlocks < 0) { - LOG(ERROR) << "isFileFullyLoadedFromPath failed to get filled blocks count for: " - << filePath << " errno: " << filledBlocks; - return filledBlocks; - } - if (totalBlocks < filledBlocks) { - LOG(ERROR) << "isFileFullyLoadedFromPath failed to get total num of blocks"; - return -EINVAL; +incfs::LoadingState IncrementalService::isMountFullyLoaded(StorageId storage) const { + const auto ifs = getIfs(storage); + if (!ifs) { + LOG(ERROR) << "isMountFullyLoaded failed, invalid storageId: " << storage; + return incfs::LoadingState(-EINVAL); } - return totalBlocks - filledBlocks; + return mIncFs->isEverythingFullyLoaded(ifs->control); } IncrementalService::LoadingProgress IncrementalService::getLoadingProgress( |