From f76f5842a410b7f653dd9474d7b9e4dc64880f3c Mon Sep 17 00:00:00 2001 From: sandrom Date: Mon, 21 Feb 2022 17:53:55 +0000 Subject: [PATCH] Add /metadata info on dumpsys diskstats and StatsPullAtomService Bug: 208676063 Test: manual tests Change-Id: Ice3b706222aa1f77beadb1b9f4ae93f0d796a0b0 --- core/java/android/os/Environment.java | 10 ++++++++++ core/proto/android/service/diskstats.proto | 2 ++ .../core/java/com/android/server/DiskStatsService.java | 2 ++ .../server/stats/pull/StatsPullAtomService.java | 5 +++++ 4 files changed, 19 insertions(+) diff --git a/core/java/android/os/Environment.java b/core/java/android/os/Environment.java index 2ed0bad69460d..2f2f65bbe9d2b 100644 --- a/core/java/android/os/Environment.java +++ b/core/java/android/os/Environment.java @@ -101,6 +101,7 @@ public class Environment { private static final File DIR_ANDROID_EXPAND = getDirectory(ENV_ANDROID_EXPAND, "/mnt/expand"); private static final File DIR_ANDROID_STORAGE = getDirectory(ENV_ANDROID_STORAGE, "/storage"); private static final File DIR_DOWNLOAD_CACHE = getDirectory(ENV_DOWNLOAD_CACHE, "/cache"); + private static final File DIR_METADATA = new File("/metadata"); private static final File DIR_OEM_ROOT = getDirectory(ENV_OEM_ROOT, "/oem"); private static final File DIR_ODM_ROOT = getDirectory(ENV_ODM_ROOT, "/odm"); private static final File DIR_VENDOR_ROOT = getDirectory(ENV_VENDOR_ROOT, "/vendor"); @@ -1101,6 +1102,15 @@ public class Environment { return DIR_DOWNLOAD_CACHE; } + /** + * Return the metadata directory. + * + * @hide + */ + public static @NonNull File getMetadataDirectory() { + return DIR_METADATA; + } + /** * Unknown storage state, such as when a path isn't backed by known storage * media. diff --git a/core/proto/android/service/diskstats.proto b/core/proto/android/service/diskstats.proto index f79de394a50fb..ad3d67346292e 100644 --- a/core/proto/android/service/diskstats.proto +++ b/core/proto/android/service/diskstats.proto @@ -99,6 +99,8 @@ message DiskStatsFreeSpaceProto { FOLDER_CACHE = 1; // System folder FOLDER_SYSTEM = 2; + // Metadata folder + FOLDER_METADATA = 3; } // Which folder? optional Folder folder = 1; diff --git a/services/core/java/com/android/server/DiskStatsService.java b/services/core/java/com/android/server/DiskStatsService.java index 8ea3dd64697e0..1095ba31069f5 100644 --- a/services/core/java/com/android/server/DiskStatsService.java +++ b/services/core/java/com/android/server/DiskStatsService.java @@ -125,6 +125,8 @@ public class DiskStatsService extends Binder { DiskStatsFreeSpaceProto.FOLDER_CACHE); reportFreeSpace(new File("/system"), "System", pw, proto, DiskStatsFreeSpaceProto.FOLDER_SYSTEM); + reportFreeSpace(Environment.getMetadataDirectory(), "Metadata", pw, proto, + DiskStatsFreeSpaceProto.FOLDER_METADATA); boolean fileBased = StorageManager.isFileEncryptedNativeOnly(); boolean blockBased = fileBased ? false : StorageManager.isBlockEncrypted(); diff --git a/services/core/java/com/android/server/stats/pull/StatsPullAtomService.java b/services/core/java/com/android/server/stats/pull/StatsPullAtomService.java index 1fa948cef2161..9cf38e3ca92f1 100644 --- a/services/core/java/com/android/server/stats/pull/StatsPullAtomService.java +++ b/services/core/java/com/android/server/stats/pull/StatsPullAtomService.java @@ -2609,6 +2609,7 @@ public class StatsPullAtomService extends SystemService { StatFs statFsData = new StatFs(Environment.getDataDirectory().getAbsolutePath()); StatFs statFsSystem = new StatFs(Environment.getRootDirectory().getAbsolutePath()); StatFs statFsCache = new StatFs(Environment.getDownloadCacheDirectory().getAbsolutePath()); + StatFs metadataFsSystem = new StatFs(Environment.getMetadataDirectory().getAbsolutePath()); pulledData.add(FrameworkStatsLog.buildStatsEvent(atomTag, FrameworkStatsLog.DIRECTORY_USAGE__DIRECTORY__DATA, statFsData.getAvailableBytes(), @@ -2621,6 +2622,10 @@ public class StatsPullAtomService extends SystemService { pulledData.add(FrameworkStatsLog.buildStatsEvent(atomTag, FrameworkStatsLog.DIRECTORY_USAGE__DIRECTORY__SYSTEM, statFsSystem.getAvailableBytes(), statFsSystem.getTotalBytes())); + + pulledData.add(FrameworkStatsLog.buildStatsEvent(atomTag, + FrameworkStatsLog.DIRECTORY_USAGE__DIRECTORY__METADATA, + metadataFsSystem.getAvailableBytes(), metadataFsSystem.getTotalBytes())); return StatsManager.PULL_SUCCESS; }