diff options
| -rw-r--r-- | cmds/installd/InstalldNativeService.cpp | 6 | ||||
| -rw-r--r-- | cmds/installd/QuotaUtils.cpp | 20 | ||||
| -rw-r--r-- | cmds/installd/QuotaUtils.h | 2 |
3 files changed, 24 insertions, 4 deletions
diff --git a/cmds/installd/InstalldNativeService.cpp b/cmds/installd/InstalldNativeService.cpp index 737c6c9582..adc2404e6f 100644 --- a/cmds/installd/InstalldNativeService.cpp +++ b/cmds/installd/InstalldNativeService.cpp @@ -626,10 +626,8 @@ binder::Status InstalldNativeService::clearAppData(const std::unique_ptr<std::st if (delete_dir_contents(path, true) != 0) { res = error("Failed to delete contents of " + path); } - path = StringPrintf("%s/Android/obb/%s", extPath.c_str(), pkgname); - if (delete_dir_contents(path, true) != 0) { - res = error("Failed to delete contents of " + path); - } + // Note that we explicitly don't delete OBBs - those are only removed on + // app uninstall. } } } diff --git a/cmds/installd/QuotaUtils.cpp b/cmds/installd/QuotaUtils.cpp index b238dd36e3..f2abf3aea3 100644 --- a/cmds/installd/QuotaUtils.cpp +++ b/cmds/installd/QuotaUtils.cpp @@ -97,6 +97,26 @@ int64_t GetOccupiedSpaceForUid(const std::string& uuid, uid_t uid) { } } +int64_t GetOccupiedSpaceForProjectId(const std::string& uuid, int projectId) { + const std::string device = FindQuotaDeviceForUuid(uuid); + if (device == "") { + return -1; + } + struct dqblk dq; + if (quotactl(QCMD(Q_GETQUOTA, PRJQUOTA), device.c_str(), projectId, + reinterpret_cast<char*>(&dq)) != 0) { + if (errno != ESRCH) { + PLOG(ERROR) << "Failed to quotactl " << device << " for Project ID " << projectId; + } + return -1; + } else { +#if MEASURE_DEBUG + LOG(DEBUG) << "quotactl() for Project ID " << projectId << " " << dq.dqb_curspace; +#endif + return dq.dqb_curspace; + } +} + int64_t GetOccupiedSpaceForGid(const std::string& uuid, gid_t gid) { const std::string device = FindQuotaDeviceForUuid(uuid); if (device == "") { diff --git a/cmds/installd/QuotaUtils.h b/cmds/installd/QuotaUtils.h index 9ad170fcbb..96aca0448e 100644 --- a/cmds/installd/QuotaUtils.h +++ b/cmds/installd/QuotaUtils.h @@ -35,6 +35,8 @@ int64_t GetOccupiedSpaceForUid(const std::string& uuid, uid_t uid); /* Get the current occupied space in bytes for a gid or -1 if fails */ int64_t GetOccupiedSpaceForGid(const std::string& uuid, gid_t gid); +/* Get the current occupied space in bytes for a project id or -1 if fails */ +int64_t GetOccupiedSpaceForProjectId(const std::string& uuid, int projectId); } // namespace installd } // namespace android |