From 0d139c04fb4a51e9feb31b6eb5ad2cd732191514 Mon Sep 17 00:00:00 2001 From: Biswarup Pal Date: Tue, 30 Mar 2021 20:04:37 +0000 Subject: [PATCH] Free only the required bytes from StorageManagerService Pass only the required number of bytes to StorageManagerService#freeCache from PackageManagerService#freeStorage. Test: m Bug: 181846007 Change-Id: I065f84f16c5100d303bb637dce658273941294c2 --- .../java/com/android/server/pm/PackageManagerService.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index dcb990600bb8a..49af02f0bc8f7 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -8213,9 +8213,10 @@ public class PackageManagerService extends IPackageManager.Stub // 11. Free storage service cache StorageManagerInternal smInternal = mInjector.getLocalService(StorageManagerInternal.class); - // TODO(b/170481432): Decide what value of bytes needs to be sent instead of - // sending the bytes parameter of freeStorage - smInternal.freeCache(volumeUuid, bytes); + long freeBytesRequired = bytes - file.getUsableSpace(); + if (freeBytesRequired > 0) { + smInternal.freeCache(volumeUuid, freeBytesRequired); + } if (file.getUsableSpace() >= bytes) return; } else { try {