Loading services/core/java/com/android/server/pm/AppDataHelper.java +4 −4 Original line number Diff line number Diff line Loading @@ -345,7 +345,7 @@ public class AppDataHelper { final StorageManager storage = mInjector.getSystemService(StorageManager.class); for (VolumeInfo vol : storage.getWritablePrivateVolumes()) { final String volumeUuid = vol.getFsUuid(); synchronized (mPm.mInstallLock) { try (PackageManagerTracedLock installLock = mPm.mInstallLock.acquireLock()) { reconcileAppsDataLI(volumeUuid, userId, flags, migrateAppsData); } } Loading Loading @@ -505,7 +505,7 @@ public class AppDataHelper { storageFlags = StorageManager.FLAG_STORAGE_DE | StorageManager.FLAG_STORAGE_CE; } final List<String> deferPackages; synchronized (mPm.mInstallLock) { try (PackageManagerTracedLock installLock = mPm.mInstallLock.acquireLock()) { deferPackages = reconcileAppsDataLI(StorageManager.UUID_PRIVATE_INTERNAL, UserHandle.USER_SYSTEM, storageFlags, true /* migrateAppData */, true /* onlyCoreApps */); Loading Loading @@ -541,7 +541,7 @@ public class AppDataHelper { count++; } } synchronized (mPm.mInstallLock) { try (PackageManagerTracedLock installLock = mPm.mInstallLock.acquireLock()) { executeBatchLI(batch); } traceLog.traceEnd(); Loading services/core/java/com/android/server/pm/DeletePackageHelper.java +4 −4 Original line number Diff line number Diff line Loading @@ -241,7 +241,7 @@ final class DeletePackageHelper { isInstallerPackage = mPm.mSettings.isInstallerPackage(packageName); } synchronized (mPm.mInstallLock) { try (PackageManagerTracedLock installLock = mPm.mInstallLock.acquireLock()) { if (DEBUG_REMOVE) Slog.d(TAG, "deletePackageX: pkg=" + packageName + " user=" + userId); try (PackageFreezer freezer = mPm.freezePackageForDelete(packageName, freezeUser, deleteFlags, "deletePackageX", ApplicationExitInfo.REASON_OTHER)) { Loading Loading @@ -280,7 +280,7 @@ final class DeletePackageHelper { // Delete the resources here after sending the broadcast to let // other processes clean up before deleting resources. synchronized (mPm.mInstallLock) { try (PackageManagerTracedLock installLock = mPm.mInstallLock.acquireLock()) { if (info.mArgs != null) { mRemovePackageHelper.cleanUpResources(info.mArgs.getPackageName(), info.mArgs.getCodeFile(), info.mArgs.getInstructionSets()); Loading Loading @@ -435,7 +435,7 @@ final class DeletePackageHelper { public void executeDeletePackage(DeletePackageAction action, String packageName, boolean deleteCodeAndResources, @NonNull int[] allUserHandles, boolean writeSettings) throws SystemDeleteException { synchronized (mPm.mInstallLock) { try (PackageManagerTracedLock installLock = mPm.mInstallLock.acquireLock()) { executeDeletePackageLIF(action, packageName, deleteCodeAndResources, allUserHandles, writeSettings); } Loading Loading @@ -681,7 +681,7 @@ final class DeletePackageHelper { // Preserve data by setting flag flags |= PackageManager.DELETE_KEEP_DATA; } synchronized (mPm.mInstallLock) { try (PackageManagerTracedLock installLock = mPm.mInstallLock.acquireLock()) { deleteInstalledPackageLIF(deletedPs, UserHandle.USER_ALL, true, flags, allUserHandles, outInfo, writeSettings); } Loading services/core/java/com/android/server/pm/FreeStorageHelper.java +23 −31 Original line number Diff line number Diff line Loading @@ -107,12 +107,10 @@ final class FreeStorageHelper { } // 4. Consider cached app data (above quotas) synchronized (mPm.mInstallLock) { try { try (PackageManagerTracedLock installLock = mPm.mInstallLock.acquireLock()) { mPm.mInstaller.freeCache(volumeUuid, bytes, Installer.FLAG_FREE_CACHE_V2); } catch (Installer.InstallerException ignored) { } } if (file.getUsableSpace() >= bytes) return; final Computer computer = mPm.snapshotComputer(); Loading Loading @@ -141,13 +139,11 @@ final class FreeStorageHelper { } // 8. Consider cached app data (below quotas) synchronized (mPm.mInstallLock) { try { try (PackageManagerTracedLock installLock = mPm.mInstallLock.acquireLock()) { mPm.mInstaller.freeCache(volumeUuid, bytes, Installer.FLAG_FREE_CACHE_V2 | Installer.FLAG_FREE_CACHE_V2_DEFY_QUOTA); } catch (Installer.InstallerException ignored) { } } if (file.getUsableSpace() >= bytes) return; // 9. Consider DropBox entries Loading Loading @@ -176,13 +172,11 @@ final class FreeStorageHelper { // 12. Clear temp install session files mPm.mInstallerService.freeStageDirs(volumeUuid); } else { synchronized (mPm.mInstallLock) { try { try (PackageManagerTracedLock installLock = mPm.mInstallLock.acquireLock()) { mPm.mInstaller.freeCache(volumeUuid, bytes, 0); } catch (Installer.InstallerException ignored) { } } } if (file.getUsableSpace() >= bytes) return; throw new IOException("Failed to free " + bytes + " on storage device at " + file); Loading @@ -197,8 +191,7 @@ final class FreeStorageHelper { final long sizeBytes = PackageManagerServiceUtils.calculateInstalledSize(resolvedPath, mPackageAbiOverride); if (sizeBytes >= 0) { synchronized (mPm.mInstallLock) { try { try (PackageManagerTracedLock installLock = mPm.mInstallLock.acquireLock()) { mPm.mInstaller.freeCache(null, sizeBytes + lowThreshold, 0); PackageInfoLite pkgInfoLite = PackageManagerServiceUtils.getMinimalPackageInfo( mContext, pkgLite, resolvedPath, installFlags, Loading @@ -214,7 +207,6 @@ final class FreeStorageHelper { Slog.w(TAG, "Failed to free cache", e); } } } return recommendedInstallLocation; } Loading services/core/java/com/android/server/pm/InstallPackageHelper.java +20 −28 Original line number Diff line number Diff line Loading @@ -756,7 +756,7 @@ final class InstallPackageHelper { Process.INVALID_UID /* previousAppId */, permissionParamsBuilder.build(), userId); synchronized (mPm.mInstallLock) { try (PackageManagerTracedLock installLock = mPm.mInstallLock.acquireLock()) { // We don't need to freeze for a brand new install mAppDataHelper.prepareAppDataPostCommitLIF( pkgSetting, /* previousAppId= */0, new int[] { userId }); Loading Loading @@ -985,13 +985,11 @@ final class InstallPackageHelper { } void installPackagesTraced(List<InstallRequest> requests) { mPm.mInstallLock.lock(); try { try (PackageManagerTracedLock installLock = mPm.mInstallLock.acquireLock()) { Trace.traceBegin(TRACE_TAG_PACKAGE_MANAGER, "installPackages"); installPackagesLI(requests); } finally { Trace.traceEnd(TRACE_TAG_PACKAGE_MANAGER); mPm.mInstallLock.unlock(); } } Loading Loading @@ -2592,7 +2590,8 @@ final class InstallPackageHelper { if (performDexopt) { // dexopt can take long, and ArtService doesn't require installd, so we release // the lock here and re-acquire the lock after dexopt is finished. mPm.mInstallLock.unlock(); PackageManagerTracedLock.RawLock installLock = mPm.mInstallLock.getRawLock(); installLock.unlock(); try { Trace.traceBegin(TRACE_TAG_PACKAGE_MANAGER, "dexopt"); Loading @@ -2612,7 +2611,7 @@ final class InstallPackageHelper { installRequest.onDexoptFinished(dexOptResult); Trace.traceEnd(TRACE_TAG_PACKAGE_MANAGER); } finally { mPm.mInstallLock.lock(); installLock.lock(); } } } Loading Loading @@ -2921,7 +2920,7 @@ final class InstallPackageHelper { // propagated to all application threads. mPm.scheduleDeferredNoKillPostDelete(args); if (Flags.improveInstallDontKill()) { synchronized (mPm.mInstallLock) { try (var installLock = mPm.mInstallLock.acquireLock()) { PackageManagerServiceUtils.linkFilesToOldDirs(mPm.mInstaller, packageName, pkgSetting.getPath(), pkgSetting.getOldPaths()); } Loading Loading @@ -3068,7 +3067,7 @@ final class InstallPackageHelper { @NonNull PackageSetting stubPkgSetting) { final int parseFlags = mPm.getDefParseFlags() | ParsingPackageUtils.PARSE_CHATTY | ParsingPackageUtils.PARSE_ENFORCE_CODE; synchronized (mPm.mInstallLock) { try (PackageManagerTracedLock installLock = mPm.mInstallLock.acquireLock()) { final AndroidPackage pkg; try (PackageFreezer freezer = mPm.freezePackage(stubPkg.getPackageName(), UserHandle.USER_ALL, Loading Loading @@ -3231,12 +3230,10 @@ final class InstallPackageHelper { } // Install the system package if (DEBUG_REMOVE) Slog.d(TAG, "Re-installing system package: " + disabledPs); try { synchronized (mPm.mInstallLock) { try (PackageManagerTracedLock installLock = mPm.mInstallLock.acquireLock()) { final int[] origUsers = outInfo == null ? null : outInfo.mOrigUsers; installPackageFromSystemLIF(disabledPs.getPathString(), allUserHandles, origUsers, writeSettings); } } catch (PackageManagerException e) { Slog.w(TAG, "Failed to restore system package:" + deletedPs.getPackageName() + ": " + e.getMessage()); Loading Loading @@ -3466,12 +3463,9 @@ final class InstallPackageHelper { if (ps != null) { ps.getPkgState().setUpdatedSystemApp(false); } try { final File codePath = new File(pkg.getPath()); synchronized (mPm.mInstallLock) { try (PackageManagerTracedLock installLock = mPm.mInstallLock.acquireLock()) { initPackageTracedLI(codePath, 0, scanFlags); } } catch (PackageManagerException e) { Slog.e(TAG, "Failed to parse updated, ex-system package: " + e.getMessage()); Loading Loading @@ -3679,15 +3673,13 @@ final class InstallPackageHelper { } mPm.mSettings.enableSystemPackageLPw(packageName); try { synchronized (mPm.mInstallLock) { try (PackageManagerTracedLock installLock = mPm.mInstallLock.acquireLock()) { final AndroidPackage newPkg = initPackageTracedLI( scanFile, reparseFlags, rescanFlags); // We rescanned a stub, add it to the list of stubbed system packages if (newPkg.isStub()) { stubSystemApps.add(packageName); } } } catch (PackageManagerException e) { Slog.e(TAG, "Failed to parse original system package: " + e.getMessage()); Loading services/core/java/com/android/server/pm/InstallingSession.java +10 −12 Original line number Diff line number Diff line Loading @@ -370,8 +370,7 @@ class InstallingSession { Slog.d(TAG, "Moving " + mMoveInfo.mPackageName + " from " + mMoveInfo.mFromUuid + " to " + mMoveInfo.mToUuid); } synchronized (mPm.mInstallLock) { try { try (PackageManagerTracedLock installLock = mPm.mInstallLock.acquireLock()) { mPm.mInstaller.moveCompleteApp(mMoveInfo.mFromUuid, mMoveInfo.mToUuid, mMoveInfo.mPackageName, mMoveInfo.mAppId, mMoveInfo.mSeInfo, mMoveInfo.mTargetSdkVersion, mMoveInfo.mFromCodePath); Loading @@ -382,7 +381,6 @@ class InstallingSession { Slog.w(TAG, errorMessage, e); return PackageManager.INSTALL_FAILED_INTERNAL_ERROR; } } final String toPathName = new File(mMoveInfo.mFromCodePath).getName(); request.setCodeFile( Loading Loading
services/core/java/com/android/server/pm/AppDataHelper.java +4 −4 Original line number Diff line number Diff line Loading @@ -345,7 +345,7 @@ public class AppDataHelper { final StorageManager storage = mInjector.getSystemService(StorageManager.class); for (VolumeInfo vol : storage.getWritablePrivateVolumes()) { final String volumeUuid = vol.getFsUuid(); synchronized (mPm.mInstallLock) { try (PackageManagerTracedLock installLock = mPm.mInstallLock.acquireLock()) { reconcileAppsDataLI(volumeUuid, userId, flags, migrateAppsData); } } Loading Loading @@ -505,7 +505,7 @@ public class AppDataHelper { storageFlags = StorageManager.FLAG_STORAGE_DE | StorageManager.FLAG_STORAGE_CE; } final List<String> deferPackages; synchronized (mPm.mInstallLock) { try (PackageManagerTracedLock installLock = mPm.mInstallLock.acquireLock()) { deferPackages = reconcileAppsDataLI(StorageManager.UUID_PRIVATE_INTERNAL, UserHandle.USER_SYSTEM, storageFlags, true /* migrateAppData */, true /* onlyCoreApps */); Loading Loading @@ -541,7 +541,7 @@ public class AppDataHelper { count++; } } synchronized (mPm.mInstallLock) { try (PackageManagerTracedLock installLock = mPm.mInstallLock.acquireLock()) { executeBatchLI(batch); } traceLog.traceEnd(); Loading
services/core/java/com/android/server/pm/DeletePackageHelper.java +4 −4 Original line number Diff line number Diff line Loading @@ -241,7 +241,7 @@ final class DeletePackageHelper { isInstallerPackage = mPm.mSettings.isInstallerPackage(packageName); } synchronized (mPm.mInstallLock) { try (PackageManagerTracedLock installLock = mPm.mInstallLock.acquireLock()) { if (DEBUG_REMOVE) Slog.d(TAG, "deletePackageX: pkg=" + packageName + " user=" + userId); try (PackageFreezer freezer = mPm.freezePackageForDelete(packageName, freezeUser, deleteFlags, "deletePackageX", ApplicationExitInfo.REASON_OTHER)) { Loading Loading @@ -280,7 +280,7 @@ final class DeletePackageHelper { // Delete the resources here after sending the broadcast to let // other processes clean up before deleting resources. synchronized (mPm.mInstallLock) { try (PackageManagerTracedLock installLock = mPm.mInstallLock.acquireLock()) { if (info.mArgs != null) { mRemovePackageHelper.cleanUpResources(info.mArgs.getPackageName(), info.mArgs.getCodeFile(), info.mArgs.getInstructionSets()); Loading Loading @@ -435,7 +435,7 @@ final class DeletePackageHelper { public void executeDeletePackage(DeletePackageAction action, String packageName, boolean deleteCodeAndResources, @NonNull int[] allUserHandles, boolean writeSettings) throws SystemDeleteException { synchronized (mPm.mInstallLock) { try (PackageManagerTracedLock installLock = mPm.mInstallLock.acquireLock()) { executeDeletePackageLIF(action, packageName, deleteCodeAndResources, allUserHandles, writeSettings); } Loading Loading @@ -681,7 +681,7 @@ final class DeletePackageHelper { // Preserve data by setting flag flags |= PackageManager.DELETE_KEEP_DATA; } synchronized (mPm.mInstallLock) { try (PackageManagerTracedLock installLock = mPm.mInstallLock.acquireLock()) { deleteInstalledPackageLIF(deletedPs, UserHandle.USER_ALL, true, flags, allUserHandles, outInfo, writeSettings); } Loading
services/core/java/com/android/server/pm/FreeStorageHelper.java +23 −31 Original line number Diff line number Diff line Loading @@ -107,12 +107,10 @@ final class FreeStorageHelper { } // 4. Consider cached app data (above quotas) synchronized (mPm.mInstallLock) { try { try (PackageManagerTracedLock installLock = mPm.mInstallLock.acquireLock()) { mPm.mInstaller.freeCache(volumeUuid, bytes, Installer.FLAG_FREE_CACHE_V2); } catch (Installer.InstallerException ignored) { } } if (file.getUsableSpace() >= bytes) return; final Computer computer = mPm.snapshotComputer(); Loading Loading @@ -141,13 +139,11 @@ final class FreeStorageHelper { } // 8. Consider cached app data (below quotas) synchronized (mPm.mInstallLock) { try { try (PackageManagerTracedLock installLock = mPm.mInstallLock.acquireLock()) { mPm.mInstaller.freeCache(volumeUuid, bytes, Installer.FLAG_FREE_CACHE_V2 | Installer.FLAG_FREE_CACHE_V2_DEFY_QUOTA); } catch (Installer.InstallerException ignored) { } } if (file.getUsableSpace() >= bytes) return; // 9. Consider DropBox entries Loading Loading @@ -176,13 +172,11 @@ final class FreeStorageHelper { // 12. Clear temp install session files mPm.mInstallerService.freeStageDirs(volumeUuid); } else { synchronized (mPm.mInstallLock) { try { try (PackageManagerTracedLock installLock = mPm.mInstallLock.acquireLock()) { mPm.mInstaller.freeCache(volumeUuid, bytes, 0); } catch (Installer.InstallerException ignored) { } } } if (file.getUsableSpace() >= bytes) return; throw new IOException("Failed to free " + bytes + " on storage device at " + file); Loading @@ -197,8 +191,7 @@ final class FreeStorageHelper { final long sizeBytes = PackageManagerServiceUtils.calculateInstalledSize(resolvedPath, mPackageAbiOverride); if (sizeBytes >= 0) { synchronized (mPm.mInstallLock) { try { try (PackageManagerTracedLock installLock = mPm.mInstallLock.acquireLock()) { mPm.mInstaller.freeCache(null, sizeBytes + lowThreshold, 0); PackageInfoLite pkgInfoLite = PackageManagerServiceUtils.getMinimalPackageInfo( mContext, pkgLite, resolvedPath, installFlags, Loading @@ -214,7 +207,6 @@ final class FreeStorageHelper { Slog.w(TAG, "Failed to free cache", e); } } } return recommendedInstallLocation; } Loading
services/core/java/com/android/server/pm/InstallPackageHelper.java +20 −28 Original line number Diff line number Diff line Loading @@ -756,7 +756,7 @@ final class InstallPackageHelper { Process.INVALID_UID /* previousAppId */, permissionParamsBuilder.build(), userId); synchronized (mPm.mInstallLock) { try (PackageManagerTracedLock installLock = mPm.mInstallLock.acquireLock()) { // We don't need to freeze for a brand new install mAppDataHelper.prepareAppDataPostCommitLIF( pkgSetting, /* previousAppId= */0, new int[] { userId }); Loading Loading @@ -985,13 +985,11 @@ final class InstallPackageHelper { } void installPackagesTraced(List<InstallRequest> requests) { mPm.mInstallLock.lock(); try { try (PackageManagerTracedLock installLock = mPm.mInstallLock.acquireLock()) { Trace.traceBegin(TRACE_TAG_PACKAGE_MANAGER, "installPackages"); installPackagesLI(requests); } finally { Trace.traceEnd(TRACE_TAG_PACKAGE_MANAGER); mPm.mInstallLock.unlock(); } } Loading Loading @@ -2592,7 +2590,8 @@ final class InstallPackageHelper { if (performDexopt) { // dexopt can take long, and ArtService doesn't require installd, so we release // the lock here and re-acquire the lock after dexopt is finished. mPm.mInstallLock.unlock(); PackageManagerTracedLock.RawLock installLock = mPm.mInstallLock.getRawLock(); installLock.unlock(); try { Trace.traceBegin(TRACE_TAG_PACKAGE_MANAGER, "dexopt"); Loading @@ -2612,7 +2611,7 @@ final class InstallPackageHelper { installRequest.onDexoptFinished(dexOptResult); Trace.traceEnd(TRACE_TAG_PACKAGE_MANAGER); } finally { mPm.mInstallLock.lock(); installLock.lock(); } } } Loading Loading @@ -2921,7 +2920,7 @@ final class InstallPackageHelper { // propagated to all application threads. mPm.scheduleDeferredNoKillPostDelete(args); if (Flags.improveInstallDontKill()) { synchronized (mPm.mInstallLock) { try (var installLock = mPm.mInstallLock.acquireLock()) { PackageManagerServiceUtils.linkFilesToOldDirs(mPm.mInstaller, packageName, pkgSetting.getPath(), pkgSetting.getOldPaths()); } Loading Loading @@ -3068,7 +3067,7 @@ final class InstallPackageHelper { @NonNull PackageSetting stubPkgSetting) { final int parseFlags = mPm.getDefParseFlags() | ParsingPackageUtils.PARSE_CHATTY | ParsingPackageUtils.PARSE_ENFORCE_CODE; synchronized (mPm.mInstallLock) { try (PackageManagerTracedLock installLock = mPm.mInstallLock.acquireLock()) { final AndroidPackage pkg; try (PackageFreezer freezer = mPm.freezePackage(stubPkg.getPackageName(), UserHandle.USER_ALL, Loading Loading @@ -3231,12 +3230,10 @@ final class InstallPackageHelper { } // Install the system package if (DEBUG_REMOVE) Slog.d(TAG, "Re-installing system package: " + disabledPs); try { synchronized (mPm.mInstallLock) { try (PackageManagerTracedLock installLock = mPm.mInstallLock.acquireLock()) { final int[] origUsers = outInfo == null ? null : outInfo.mOrigUsers; installPackageFromSystemLIF(disabledPs.getPathString(), allUserHandles, origUsers, writeSettings); } } catch (PackageManagerException e) { Slog.w(TAG, "Failed to restore system package:" + deletedPs.getPackageName() + ": " + e.getMessage()); Loading Loading @@ -3466,12 +3463,9 @@ final class InstallPackageHelper { if (ps != null) { ps.getPkgState().setUpdatedSystemApp(false); } try { final File codePath = new File(pkg.getPath()); synchronized (mPm.mInstallLock) { try (PackageManagerTracedLock installLock = mPm.mInstallLock.acquireLock()) { initPackageTracedLI(codePath, 0, scanFlags); } } catch (PackageManagerException e) { Slog.e(TAG, "Failed to parse updated, ex-system package: " + e.getMessage()); Loading Loading @@ -3679,15 +3673,13 @@ final class InstallPackageHelper { } mPm.mSettings.enableSystemPackageLPw(packageName); try { synchronized (mPm.mInstallLock) { try (PackageManagerTracedLock installLock = mPm.mInstallLock.acquireLock()) { final AndroidPackage newPkg = initPackageTracedLI( scanFile, reparseFlags, rescanFlags); // We rescanned a stub, add it to the list of stubbed system packages if (newPkg.isStub()) { stubSystemApps.add(packageName); } } } catch (PackageManagerException e) { Slog.e(TAG, "Failed to parse original system package: " + e.getMessage()); Loading
services/core/java/com/android/server/pm/InstallingSession.java +10 −12 Original line number Diff line number Diff line Loading @@ -370,8 +370,7 @@ class InstallingSession { Slog.d(TAG, "Moving " + mMoveInfo.mPackageName + " from " + mMoveInfo.mFromUuid + " to " + mMoveInfo.mToUuid); } synchronized (mPm.mInstallLock) { try { try (PackageManagerTracedLock installLock = mPm.mInstallLock.acquireLock()) { mPm.mInstaller.moveCompleteApp(mMoveInfo.mFromUuid, mMoveInfo.mToUuid, mMoveInfo.mPackageName, mMoveInfo.mAppId, mMoveInfo.mSeInfo, mMoveInfo.mTargetSdkVersion, mMoveInfo.mFromCodePath); Loading @@ -382,7 +381,6 @@ class InstallingSession { Slog.w(TAG, errorMessage, e); return PackageManager.INSTALL_FAILED_INTERNAL_ERROR; } } final String toPathName = new File(mMoveInfo.mFromCodePath).getName(); request.setCodeFile( Loading