Lines Matching refs:ifs
425 for (auto&& [id, ifs] : mMounts) { in onDump()
426 std::unique_lock ll(ifs->lock); in onDump()
427 const IncFsMount& mnt = *ifs; in onDump()
434 const auto& metricsInstanceName = ifs->metricsKey; in onDump()
486 const auto lastReadError = mIncFs->getLastReadError(ifs->control); in onDump()
519 bool IncrementalService::needStartDataLoaderLocked(IncFsMount& ifs) { in needStartDataLoaderLocked() argument
520 if (!ifs.dataLoaderStub) { in needStartDataLoaderLocked()
523 if (ifs.dataLoaderStub->isSystemDataLoader()) { in needStartDataLoaderLocked()
527 return mIncFs->isEverythingFullyLoaded(ifs.control) == incfs::LoadingState::MissingBlocks; in needStartDataLoaderLocked()
539 for (auto&& [id, ifs] : mMounts) { in onSystemReady()
540 std::unique_lock ll(ifs->lock); in onSystemReady()
542 if (ifs->mountId != id) { in onSystemReady()
546 if (needStartDataLoaderLocked(*ifs)) { in onSystemReady()
547 mounts.push_back(ifs); in onSystemReady()
558 for (auto&& ifs : mounts) { in onSystemReady()
559 std::unique_lock l(ifs->lock); in onSystemReady()
560 if (ifs->dataLoaderStub) { in onSystemReady()
561 ifs->dataLoaderStub->requestStart(); in onSystemReady()
667 auto ifs = std::make_shared<IncFsMount>(std::move(mountRoot), std::move(metricsKey), mountId, in createStorage() local
682 const auto storageIt = ifs->makeStorage(ifs->mountId); in createStorage()
683 if (storageIt == ifs->storages.end()) { in createStorage()
690 m.mutable_storage()->set_id(ifs->mountId); in createStorage()
697 mIncFs->makeFile(ifs->control, in createStorage()
698 path::join(ifs->root, constants().mount, in createStorage()
709 if (auto err = addBindMount(*ifs, storageIt->first, storageIt->second.name, in createStorage()
719 mountIt->second = std::move(ifs); in createStorage()
735 auto ifs = getIfsLocked(linkedStorage); in createLinkedStorage() local
736 if (!ifs) { in createLinkedStorage()
743 const auto storageIt = ifs->makeStorage(storageId); in createLinkedStorage()
744 if (storageIt == ifs->storages.end()) { in createLinkedStorage()
754 if (auto err = addBindMount(*ifs, storageIt->first, storageIt->second.name, in createLinkedStorage()
759 (void)mIncFs->unlink(ifs->control, storageIt->second.name); in createLinkedStorage()
760 ifs->storages.erase(storageIt); in createLinkedStorage()
764 mountIt->second = ifs; in createLinkedStorage()
779 IfsMountPtr ifs; in startLoading() local
784 ifs = getIfs(storageId); in startLoading()
785 if (!ifs) { in startLoading()
789 std::unique_lock l(ifs->lock); in startLoading()
790 dataLoaderStub = std::exchange(ifs->dataLoaderStub, nullptr); in startLoading()
799 std::unique_lock l(ifs->lock); in startLoading()
800 if (ifs->dataLoaderStub) { in startLoading()
805 prepareDataLoaderLocked(*ifs, std::move(dataLoaderParams), std::move(statusListener), in startLoading()
807 CHECK(ifs->dataLoaderStub); in startLoading()
808 dataLoaderStub = ifs->dataLoaderStub; in startLoading()
812 ifs->setReadTimeoutsRequested(dataLoaderStub->isSystemDataLoader() && in startLoading()
814 applyStorageParamsLocked(*ifs); in startLoading()
820 ifs->startLoadingTs = TimePoint::max(); in startLoading()
824 ifs->startLoadingTs = startLoadingTs; in startLoading()
828 const auto ifs = getIfs(storageId); in startLoading() local
829 if (!ifs) { in startLoading()
834 std::unique_lock l(ifs->lock); in startLoading()
835 if (ifs->startLoadingTs != startLoadingTs) { in startLoading()
841 disableReadLogsLocked(*ifs); in startLoading()
849 IfsMountPtr ifs = getIfs(storage); in onInstallationComplete() local
850 if (!ifs) { in onInstallationComplete()
855 std::unique_lock l(ifs->lock); in onInstallationComplete()
856 ifs->setReadTimeoutsRequested(true); in onInstallationComplete()
857 applyStorageParamsLocked(*ifs); in onInstallationComplete()
875 const auto ifs = getIfs(storageId); in disallowReadLogs() local
876 if (!ifs) { in disallowReadLogs()
881 std::unique_lock l(ifs->lock); in disallowReadLogs()
882 if (!ifs->readLogsAllowed()) { in disallowReadLogs()
885 ifs->disallowReadLogs(); in disallowReadLogs()
888 if (auto err = mIncFs->makeFile(ifs->control, in disallowReadLogs()
889 path::join(ifs->root, constants().mount, in disallowReadLogs()
897 disableReadLogsLocked(*ifs); in disallowReadLogs()
901 const auto ifs = getIfs(storageId); in setStorageParams() local
902 if (!ifs) { in setStorageParams()
910 std::unique_lock l(ifs->lock); in setStorageParams()
912 return disableReadLogsLocked(*ifs); in setStorageParams()
915 if (!ifs->readLogsAllowed()) { in setStorageParams()
920 if (!ifs->dataLoaderStub) { in setStorageParams()
928 const auto startLoadingTs = ifs->startLoadingTs; in setStorageParams()
936 packageName = ifs->dataLoaderStub->params().packageName; in setStorageParams()
937 ifs->setReadLogsRequested(true); in setStorageParams()
959 std::unique_lock l(ifs->lock); in setStorageParams()
960 if (!ifs->readLogsRequested()) { in setStorageParams()
963 if (auto status = applyStorageParamsLocked(*ifs); status != 0) { in setStorageParams()
973 int IncrementalService::disableReadLogsLocked(IncFsMount& ifs) { in disableReadLogsLocked() argument
974 ifs.setReadLogsRequested(false); in disableReadLogsLocked()
975 return applyStorageParamsLocked(ifs); in disableReadLogsLocked()
978 int IncrementalService::applyStorageParamsLocked(IncFsMount& ifs) { in applyStorageParamsLocked() argument
980 control.cmd.reset(dup(ifs.control.cmd())); in applyStorageParamsLocked()
981 control.pendingReads.reset(dup(ifs.control.pendingReads())); in applyStorageParamsLocked()
982 auto logsFd = ifs.control.logs(); in applyStorageParamsLocked()
987 bool enableReadLogs = ifs.readLogsRequested(); in applyStorageParamsLocked()
988 bool enableReadTimeouts = ifs.readTimeoutsRequested(); in applyStorageParamsLocked()
992 ifs.metricsKey); in applyStorageParamsLocked()
995 ifs.setReadLogsEnabled(enableReadLogs); in applyStorageParamsLocked()
996 ifs.setReadTimeoutsEnabled(enableReadTimeouts); in applyStorageParamsLocked()
1004 const auto ifs = getIfs(storageId); in deleteStorage() local
1005 if (!ifs) { in deleteStorage()
1008 deleteStorage(*ifs); in deleteStorage()
1011 void IncrementalService::deleteStorage(IncrementalService::IncFsMount& ifs) { in deleteStorage() argument
1012 std::unique_lock l(ifs.lock); in deleteStorage()
1013 deleteStorageLocked(ifs, std::move(l)); in deleteStorage()
1016 void IncrementalService::deleteStorageLocked(IncrementalService::IncFsMount& ifs, in deleteStorageLocked() argument
1018 const auto storages = std::move(ifs.storages); in deleteStorageLocked()
1020 const auto bindPoints = ifs.bindPoints; in deleteStorageLocked()
1025 if (id != ifs.mountId) { in deleteStorageLocked()
1032 mMounts.erase(ifs.mountId); in deleteStorageLocked()
1064 const auto ifs = getIfs(storage); in bind() local
1065 if (!ifs) { in bind()
1070 std::unique_lock l(ifs->lock); in bind()
1071 const auto storageInfo = ifs->storages.find(storage); in bind()
1072 if (storageInfo == ifs->storages.end()) { in bind()
1076 std::string normSource = normalizePathToStorageLocked(*ifs, storageInfo, source); in bind()
1083 return addBindMount(*ifs, storage, storageInfo->second.name, std::move(normSource), in bind()
1104 const auto ifs = getIfsLocked(storageId); in unbind() local
1105 if (!ifs) { in unbind()
1114 std::unique_lock l2(ifs->lock); in unbind()
1115 if (ifs->bindPoints.size() <= 1) { in unbind()
1116 ifs->bindPoints.clear(); in unbind()
1117 deleteStorageLocked(*ifs, std::move(l2)); in unbind()
1120 ifs->bindPoints.erase(bindIt); in unbind()
1123 mIncFs->unlink(ifs->control, path::join(ifs->root, constants().mount, savedFile)); in unbind()
1148 std::string IncrementalService::normalizePathToStorage(const IncFsMount& ifs, StorageId storage, in normalizePathToStorage() argument
1150 std::unique_lock l(ifs.lock); in normalizePathToStorage()
1151 const auto storageInfo = ifs.storages.find(storage); in normalizePathToStorage()
1152 if (storageInfo == ifs.storages.end()) { in normalizePathToStorage()
1155 return normalizePathToStorageLocked(ifs, storageInfo, path); in normalizePathToStorage()
1160 const auto ifs = getIfs(storage); in makeFile() local
1161 if (!ifs) { in makeFile()
1176 const std::string normPath = normalizePathToStorage(*ifs, storage, path); in makeFile()
1181 if (auto err = mIncFs->makeFile(ifs->control, normPath, mode, id, params); err) { in makeFile()
1187 if (auto err = mIncFs->reserveSpace(ifs->control, id, params.size)) { in makeFile()
1190 (void)mIncFs->unlink(ifs->control, normPath); in makeFile()
1198 if (auto err = setFileContent(ifs, id, path, data); err) { in makeFile()
1199 (void)mIncFs->unlink(ifs->control, normPath); in makeFile()
1208 if (auto ifs = getIfs(storageId)) { in makeDir() local
1209 std::string normPath = normalizePathToStorage(*ifs, storageId, path); in makeDir()
1213 return mIncFs->makeDir(ifs->control, normPath, mode); in makeDir()
1219 const auto ifs = getIfs(storageId); in makeDirs() local
1220 if (!ifs) { in makeDirs()
1223 return makeDirs(*ifs, storageId, path, mode); in makeDirs()
1226 int IncrementalService::makeDirs(const IncFsMount& ifs, StorageId storageId, std::string_view path, in makeDirs() argument
1228 std::string normPath = normalizePathToStorage(ifs, storageId, path); in makeDirs()
1232 return mIncFs->makeDirs(ifs.control, normPath, mode); in makeDirs()
1261 if (auto ifs = getIfs(storage)) { in unlink() local
1262 std::string normOldPath = normalizePathToStorage(*ifs, storage, path); in unlink()
1263 return mIncFs->unlink(ifs->control, normOldPath); in unlink()
1268 int IncrementalService::addBindMount(IncFsMount& ifs, StorageId storage, in addBindMount() argument
1288 metadataFullPath = path::join(ifs.root, constants().mount, mdFileName); in addBindMount()
1289 auto node = mIncFs->makeFile(ifs.control, metadataFullPath, 0444, idFromMetadata(metadata), in addBindMount()
1297 const auto res = addBindMountWithMd(ifs, storage, std::move(mdFileName), std::move(source), in addBindMount()
1300 mIncFs->unlink(ifs.control, metadataFullPath); in addBindMount()
1305 int IncrementalService::addBindMountWithMd(IncrementalService::IncFsMount& ifs, StorageId storage, in addBindMountWithMd() argument
1326 std::lock_guard l(ifs.lock); in addBindMountWithMd()
1327 addBindMountRecordLocked(ifs, storage, std::move(metadataName), std::move(source), in addBindMountWithMd()
1332 void IncrementalService::addBindMountRecordLocked(IncFsMount& ifs, StorageId storage, in addBindMountRecordLocked() argument
1336 ifs.bindPoints.insert_or_assign(target, in addBindMountRecordLocked()
1343 const auto ifs = getIfs(storage); in getMetadata() local
1344 if (!ifs) { in getMetadata()
1347 const auto normPath = normalizePathToStorage(*ifs, storage, path); in getMetadata()
1351 return mIncFs->getMetadata(ifs->control, normPath); in getMetadata()
1355 const auto ifs = getIfs(storage); in getMetadata() local
1356 if (!ifs) { in getMetadata()
1359 return mIncFs->getMetadata(ifs->control, node); in getMetadata()
1378 const auto ifs = getIfs(storage); in setUidReadTimeouts() local
1379 if (!ifs) { in setUidReadTimeouts()
1384 if (auto err = mIncFs->setUidReadTimeouts(ifs->control, perUidReadTimeouts); err < 0) { in setUidReadTimeouts()
1400 const auto ifs = getIfs(storage); in clearUidReadTimeouts() local
1401 if (!ifs) { in clearUidReadTimeouts()
1404 mIncFs->setUidReadTimeouts(ifs->control, {}); in clearUidReadTimeouts()
1502 auto ifs = std::make_shared<IncFsMount>(std::string(expectedRoot), std::move(metricsKey), in adoptMountedInstances() local
1508 ifs->disallowReadLogs(); in adoptMountedInstances()
1520 ifs->control, in adoptMountedInstances()
1526 mIncFs->unlink(ifs->control, path::join(root, name)); in adoptMountedInstances()
1548 auto [_, inserted] = mMounts.try_emplace(storageId, ifs); in adoptMountedInstances()
1554 ifs->storages.insert_or_assign(storageId, in adoptMountedInstances()
1561 if (ifs->storages.empty()) { in adoptMountedInstances()
1579 addBindMountRecordLocked(*ifs, bindRecord.storage_id(), std::move(metadataFile), in adoptMountedInstances()
1591 if (addBindMountWithMd(*ifs, bindRecord.storage_id(), std::move(metadataFile), in adoptMountedInstances()
1595 mIncFs->unlink(ifs->control, metadataFile); in adoptMountedInstances()
1611 if (ifs->bindPoints.empty()) { in adoptMountedInstances()
1613 deleteStorage(*ifs); in adoptMountedInstances()
1617 prepareDataLoaderLocked(*ifs, std::move(dataLoaderParams)); in adoptMountedInstances()
1618 CHECK(ifs->dataLoaderStub); in adoptMountedInstances()
1620 mountedRootNames.insert(path::basename(ifs->root)); in adoptMountedInstances()
1623 mMounts[ifs->mountId] = std::move(ifs); in adoptMountedInstances()
1674 auto ifs = std::make_shared<IncFsMount>(std::string(root), std::move(metricsKey), -1, in mountExistingImage() local
1677 auto mount = parseFromIncfs<metadata::Mount>(mIncFs.get(), ifs->control, in mountExistingImage()
1684 ifs->mountId = mount.storage().id(); in mountExistingImage()
1685 mNextId = std::max(mNextId, ifs->mountId + 1); in mountExistingImage()
1689 ifs->disallowReadLogs(); in mountExistingImage()
1702 prepareDataLoaderLocked(*ifs, std::move(dataLoaderParams)); in mountExistingImage()
1703 CHECK(ifs->dataLoaderStub); in mountExistingImage()
1713 ifs->control, in mountExistingImage()
1719 mIncFs->unlink(ifs->control, path::join(ifs->root, constants().mount, name)); in mountExistingImage()
1736 auto [_, inserted] = mMounts.try_emplace(storageId, ifs); in mountExistingImage()
1742 ifs->storages.insert_or_assign(storageId, in mountExistingImage()
1750 if (ifs->storages.empty()) { in mountExistingImage()
1759 bindCount += !addBindMountWithMd(*ifs, bp.second.storage_id(), std::move(bp.first), in mountExistingImage()
1768 deleteStorage(*ifs); in mountExistingImage()
1773 mMounts[ifs->mountId] = std::move(ifs); in mountExistingImage()
1784 void IncrementalService::trimReservedSpaceV1(const IncFsMount& ifs) { in trimReservedSpaceV1() argument
1785 mIncFs->forEachFile(ifs.control, [this](auto&& control, auto&& fileId) { in trimReservedSpaceV1()
1793 void IncrementalService::prepareDataLoaderLocked(IncFsMount& ifs, DataLoaderParamsParcel&& params, in prepareDataLoaderLocked() argument
1799 fsControlParcel.incremental->cmd.reset(dup(ifs.control.cmd())); in prepareDataLoaderLocked()
1800 fsControlParcel.incremental->pendingReads.reset(dup(ifs.control.pendingReads())); in prepareDataLoaderLocked()
1801 fsControlParcel.incremental->log.reset(dup(ifs.control.logs())); in prepareDataLoaderLocked()
1802 if (ifs.control.blocksWritten() >= 0) { in prepareDataLoaderLocked()
1803 fsControlParcel.incremental->blocksWritten.emplace(dup(ifs.control.blocksWritten())); in prepareDataLoaderLocked()
1805 fsControlParcel.service = new IncrementalServiceConnector(*this, ifs.mountId); in prepareDataLoaderLocked()
1807 ifs.dataLoaderStub = in prepareDataLoaderLocked()
1808 new DataLoaderStub(*this, ifs.mountId, std::move(params), std::move(fsControlParcel), in prepareDataLoaderLocked()
1810 std::move(healthListener), path::join(ifs.root, constants().mount)); in prepareDataLoaderLocked()
1814 addIfsStateCallback(ifs.mountId, [this](StorageId storageId, IfsState state) -> bool { in prepareDataLoaderLocked()
1819 const auto ifs = getIfs(storageId); in prepareDataLoaderLocked() local
1820 if (!ifs) { in prepareDataLoaderLocked()
1823 trimReservedSpaceV1(*ifs); in prepareDataLoaderLocked()
1828 addIfsStateCallback(ifs.mountId, [this](StorageId storageId, IfsState state) -> bool { in prepareDataLoaderLocked()
1835 const auto ifs = getIfs(storageId); in prepareDataLoaderLocked() local
1836 if (!ifs) { in prepareDataLoaderLocked()
1840 std::unique_lock l(ifs->lock); in prepareDataLoaderLocked()
1841 dataLoaderStub = std::exchange(ifs->dataLoaderStub, nullptr); in prepareDataLoaderLocked()
1868 const auto ifs = getIfs(storage); in configureNativeBinaries() local
1869 if (!ifs) { in configureNativeBinaries()
1875 path::join(path::dirname(normalizePathToStorage(*ifs, storage, apkFullPath)), in configureNativeBinaries()
1879 if (auto res = makeDirs(*ifs, storage, targetLibPathRelativeToStorage, 0755)) { in configureNativeBinaries()
1908 sourceId = mIncFs->getFileId(ifs->control, apkFullPath); in configureNativeBinaries()
1946 const auto targetLibPathAbsolute = normalizePathToStorage(*ifs, storage, targetLibPath); in configureNativeBinaries()
1964 if (auto res = mIncFs->makeMappedFile(ifs->control, targetLibPathAbsolute, 0755, in configureNativeBinaries()
1987 if (auto res = mIncFs->makeFile(ifs->control, targetLibPathAbsolute, 0755, libFileId, in configureNativeBinaries()
2005 jobQueue.emplace_back([this, zipFile, entry, ifs = std::weak_ptr<IncFsMount>(ifs), in configureNativeBinaries()
2008 extractZipFile(ifs.lock(), zipFile.get(), entry, libFileId, libPath, makeFileTs); in configureNativeBinaries()
2026 auto& existingJobs = mJobQueue[ifs->mountId]; in configureNativeBinaries()
2050 void IncrementalService::extractZipFile(const IfsMountPtr& ifs, ZipArchiveHandle zipFile, in extractZipFile() argument
2054 if (!ifs) { in extractZipFile()
2071 if (setFileContent(ifs, libFileId, debugLibPath, in extractZipFile()
2101 auto ifs = getIfs(storage); in waitForNativeBinariesExtraction() local
2102 if (!ifs) { in waitForNativeBinariesExtraction()
2105 mount = ifs->mountId; in waitForNativeBinariesExtraction()
2116 int IncrementalService::setFileContent(const IfsMountPtr& ifs, const incfs::FileId& fileId, in setFileContent() argument
2121 const auto writeFd = mIncFs->openForSpecialOps(ifs->control, fileId); in setFileContent()
2168 const auto ifs = getIfsLocked(storage); in isFileFullyLoaded() local
2169 if (!ifs) { in isFileFullyLoaded()
2173 const auto storageInfo = ifs->storages.find(storage); in isFileFullyLoaded()
2174 if (storageInfo == ifs->storages.end()) { in isFileFullyLoaded()
2179 return mIncFs->isFileFullyLoaded(ifs->control, filePath); in isFileFullyLoaded()
2183 const auto ifs = getIfs(storage); in isMountFullyLoaded() local
2184 if (!ifs) { in isMountFullyLoaded()
2188 return mIncFs->isEverythingFullyLoaded(ifs->control); in isMountFullyLoaded()
2194 const auto ifs = getIfsLocked(storage); in getLoadingProgress() local
2195 if (!ifs) { in getLoadingProgress()
2199 const auto storageInfo = ifs->storages.find(storage); in getLoadingProgress()
2200 if (storageInfo == ifs->storages.end()) { in getLoadingProgress()
2205 return getLoadingProgressFromPath(*ifs, storageInfo->second.name); in getLoadingProgress()
2209 const IncFsMount& ifs, std::string_view storagePath) const { in getLoadingProgressFromPath() argument
2213 mIncFs->countFilledBlocks(ifs.control, filePath); in getLoadingProgressFromPath()
2334 for (auto&& [id, ifs] : mMounts) { in onAppOpChanged()
2335 std::unique_lock ll(ifs->lock); in onAppOpChanged()
2336 if (ifs->mountId == id && ifs->dataLoaderStub && in onAppOpChanged()
2337 ifs->dataLoaderStub->params().packageName == packageName) { in onAppOpChanged()
2338 affected.push_back(ifs); in onAppOpChanged()
2342 for (auto&& ifs : affected) { in onAppOpChanged()
2343 std::unique_lock ll(ifs->lock); in onAppOpChanged()
2344 disableReadLogsLocked(*ifs); in onAppOpChanged()
2449 const auto ifs = getIfs(storageId); in processIfsStateCallbacks() local
2450 storageState.readLogsEnabled = ifs && ifs->readLogsEnabled(); in processIfsStateCallbacks()
2468 const auto ifs = getIfs(storageId); in getMetrics() local
2469 if (!ifs) { in getMetrics()
2475 result->putBoolean(String16(kMetricsReadLogsEnabled.c_str()), ifs->readLogsEnabled() != 0); in getMetrics()
2476 const auto incfsMetrics = mIncFs->getMetrics(ifs->metricsKey); in getMetrics()
2494 const auto lastReadError = mIncFs->getLastReadError(ifs->control); in getMetrics()
2507 std::unique_lock l(ifs->lock); in getMetrics()
2508 if (!ifs->dataLoaderStub) { in getMetrics()
2511 ifs->dataLoaderStub->getMetrics(result); in getMetrics()