diff --git a/core/java/android/os/StatFs.java b/core/java/android/os/StatFs.java index 13e9a15eedb63..d9e516cd7ecf0 100644 --- a/core/java/android/os/StatFs.java +++ b/core/java/android/os/StatFs.java @@ -61,15 +61,15 @@ public class StatFs { */ @Deprecated public int getBlockSize() { - return (int) mStat.f_bsize; + return (int) mStat.f_frsize; } /** * The size, in bytes, of a block on the file system. This corresponds to - * the Unix {@code statvfs.f_bsize} field. + * the Unix {@code statvfs.f_frsize} field. */ public long getBlockSizeLong() { - return mStat.f_bsize; + return mStat.f_frsize; } /** @@ -112,7 +112,7 @@ public class StatFs { * will want to use {@link #getAvailableBytes()} instead. */ public long getFreeBytes() { - return mStat.f_bfree * mStat.f_bsize; + return mStat.f_bfree * mStat.f_frsize; } /** @@ -136,13 +136,13 @@ public class StatFs { * applications. */ public long getAvailableBytes() { - return mStat.f_bavail * mStat.f_bsize; + return mStat.f_bavail * mStat.f_frsize; } /** * The total number of bytes supported by the file system. */ public long getTotalBytes() { - return mStat.f_blocks * mStat.f_bsize; + return mStat.f_blocks * mStat.f_frsize; } } diff --git a/packages/DefaultContainerService/src/com/android/defcontainer/DefaultContainerService.java b/packages/DefaultContainerService/src/com/android/defcontainer/DefaultContainerService.java index cc1e01a35ddf7..37a68e0c557ae 100644 --- a/packages/DefaultContainerService/src/com/android/defcontainer/DefaultContainerService.java +++ b/packages/DefaultContainerService/src/com/android/defcontainer/DefaultContainerService.java @@ -220,14 +220,8 @@ public class DefaultContainerService extends IntentService { public long[] getFileSystemStats(String path) { Process.setThreadPriority(Process.THREAD_PRIORITY_BACKGROUND); - try { - final StructStatVfs stat = Os.statvfs(path); - final long totalSize = stat.f_blocks * stat.f_bsize; - final long availSize = stat.f_bavail * stat.f_bsize; - return new long[] { totalSize, availSize }; - } catch (ErrnoException e) { - throw new IllegalStateException(e); - } + final File file = new File(path); + return new long[] { file.getTotalSpace(), file.getUsableSpace() }; } @Override diff --git a/packages/ExtServices/src/android/ext/services/storage/CacheQuotaServiceImpl.java b/packages/ExtServices/src/android/ext/services/storage/CacheQuotaServiceImpl.java index 18863ca4cefef..862f50b2b627c 100644 --- a/packages/ExtServices/src/android/ext/services/storage/CacheQuotaServiceImpl.java +++ b/packages/ExtServices/src/android/ext/services/storage/CacheQuotaServiceImpl.java @@ -1,4 +1,3 @@ - /* * Copyright (C) 2017 The Android Open Source Project * @@ -123,10 +122,10 @@ public class CacheQuotaServiceImpl extends CacheQuotaService { StorageManager storageManager = getSystemService(StorageManager.class); long freeBytes = 0; if (uuid == StorageManager.UUID_PRIVATE_INTERNAL) { // regular equals because of null - freeBytes = Environment.getDataDirectory().getFreeSpace(); + freeBytes = Environment.getDataDirectory().getUsableSpace(); } else { final VolumeInfo vol = storageManager.findVolumeByUuid(uuid); - freeBytes = vol.getPath().getFreeSpace(); + freeBytes = vol.getPath().getUsableSpace(); } return Math.round(freeBytes * CACHE_RESERVE_RATIO); } diff --git a/packages/ExtServices/tests/src/android/ext/services/storage/CacheQuotaServiceImplTest.java b/packages/ExtServices/tests/src/android/ext/services/storage/CacheQuotaServiceImplTest.java index cc1699a38d39f..df4738ff1948c 100644 --- a/packages/ExtServices/tests/src/android/ext/services/storage/CacheQuotaServiceImplTest.java +++ b/packages/ExtServices/tests/src/android/ext/services/storage/CacheQuotaServiceImplTest.java @@ -61,7 +61,7 @@ public class CacheQuotaServiceImplTest extends ServiceTestCase 0) { - return totalInternalStorage; - } else { - final File path = info.getPath(); - if (path == null) { - // Should not happen, caller should have checked. - Log.e(TAG, "info's path is null on getTotalSize(): " + info); - return 0; - } - return path.getTotalSpace(); - } + final Context context = AppGlobals.getInitialApplication(); + final StorageStatsManager stats = context.getSystemService(StorageStatsManager.class); + return stats.getTotalBytes(info.getFsUuid()); } - } diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index f5357dfd6673c..d70ea281f4760 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -22231,7 +22231,7 @@ Slog.v(TAG, ":: stepped forward, applying functor at tag " + parser.getName()); if (DEBUG_INSTALL) Slog.d(TAG, "Measured code size " + stats.codeSize + ", data size " + stats.dataSize); - final long startFreeBytes = measurePath.getFreeSpace(); + final long startFreeBytes = measurePath.getUsableSpace(); final long sizeBytes; if (moveCompleteApp) { sizeBytes = stats.codeSize + stats.dataSize; @@ -22295,7 +22295,7 @@ Slog.v(TAG, ":: stepped forward, applying functor at tag " + parser.getName()); } catch (InterruptedException ignored) { } - final long deltaFreeBytes = startFreeBytes - measurePath.getFreeSpace(); + final long deltaFreeBytes = startFreeBytes - measurePath.getUsableSpace(); final int progress = 10 + (int) MathUtils.constrain( ((deltaFreeBytes * 80) / sizeBytes), 0, 80); mMoveCallbacks.notifyStatusChanged(moveId, progress); diff --git a/services/usage/java/com/android/server/usage/StorageStatsService.java b/services/usage/java/com/android/server/usage/StorageStatsService.java index 68c4c563c2f51..3f39e4f3cf4b6 100644 --- a/services/usage/java/com/android/server/usage/StorageStatsService.java +++ b/services/usage/java/com/android/server/usage/StorageStatsService.java @@ -398,7 +398,7 @@ public class StorageStatsService extends IStorageStatsManager.Stub { super(looper); // TODO: Handle all private volumes. mStats = new StatFs(Environment.getDataDirectory().getAbsolutePath()); - mPreviousBytes = mStats.getFreeBytes(); + mPreviousBytes = mStats.getAvailableBytes(); mMinimumThresholdBytes = mStats.getTotalBytes() * MINIMUM_CHANGE_DELTA; } @@ -413,9 +413,9 @@ public class StorageStatsService extends IStorageStatsManager.Stub { switch (msg.what) { case MSG_CHECK_STORAGE_DELTA: { - long bytesDelta = Math.abs(mPreviousBytes - mStats.getFreeBytes()); + long bytesDelta = Math.abs(mPreviousBytes - mStats.getAvailableBytes()); if (bytesDelta > mMinimumThresholdBytes) { - mPreviousBytes = mStats.getFreeBytes(); + mPreviousBytes = mStats.getAvailableBytes(); recalculateQuotas(getInitializedStrategy()); } sendEmptyMessageDelayed(MSG_CHECK_STORAGE_DELTA, DELAY_IN_MILLIS); @@ -434,7 +434,7 @@ public class StorageStatsService extends IStorageStatsManager.Stub { // If errors occurred getting the quotas from disk, let's re-calc them. if (mPreviousBytes < 0) { - mPreviousBytes = mStats.getFreeBytes(); + mPreviousBytes = mStats.getAvailableBytes(); recalculateQuotas(strategy); } sendEmptyMessageDelayed(MSG_CHECK_STORAGE_DELTA, DELAY_IN_MILLIS);