Loading cmds/dumpstate/dumpstate.cpp +0 −1 Original line number Diff line number Diff line Loading @@ -1582,7 +1582,6 @@ static Dumpstate::RunStatus dumpstate() { DumpFile("BUDDYINFO", "/proc/buddyinfo"); DumpExternalFragmentationInfo(); DumpFile("KERNEL WAKE SOURCES", "/d/wakeup_sources"); DumpFile("KERNEL CPUFREQ", "/sys/devices/system/cpu/cpu0/cpufreq/stats/time_in_state"); RunCommand("PROCESSES AND THREADS", Loading cmds/installd/Android.bp +5 −0 Original line number Diff line number Diff line Loading @@ -10,6 +10,7 @@ package { cc_defaults { name: "installd_defaults", cpp_std: "c++2a", cflags: [ "-Wall", "-Werror", Loading Loading @@ -41,6 +42,7 @@ cc_defaults { "libbinder", "libcrypto", "libcutils", "libext2_uuid", "liblog", "liblogwrap", "libprocessgroup", Loading Loading @@ -239,6 +241,8 @@ cc_library_static { cc_binary { name: "otapreopt", cpp_std: "c++2a", cflags: [ "-Wall", "-Werror", Loading Loading @@ -268,6 +272,7 @@ cc_binary { "libbase", "libcrypto", "libcutils", "libext2_uuid", "liblog", "liblogwrap", "libprocessgroup", Loading cmds/installd/InstalldNativeService.cpp +23 −11 Original line number Diff line number Diff line Loading @@ -957,13 +957,13 @@ binder::Status InstalldNativeService::destroyAppData(const std::optional<std::st binder::Status res = ok(); if (flags & FLAG_STORAGE_CE) { auto path = create_data_user_ce_package_path(uuid_, userId, pkgname, ceDataInode); if (delete_dir_contents_and_dir(path) != 0) { if (rename_delete_dir_contents_and_dir(path) != 0) { res = error("Failed to delete " + path); } } if (flags & FLAG_STORAGE_DE) { auto path = create_data_user_de_package_path(uuid_, userId, pkgname); if (delete_dir_contents_and_dir(path) != 0) { if (rename_delete_dir_contents_and_dir(path) != 0) { res = error("Failed to delete " + path); } if ((flags & FLAG_CLEAR_APP_DATA_KEEP_ART_PROFILES) == 0) { Loading Loading @@ -994,16 +994,15 @@ binder::Status InstalldNativeService::destroyAppData(const std::optional<std::st } auto path = StringPrintf("%s/Android/data/%s", extPath.c_str(), pkgname); if (delete_dir_contents_and_dir(path, true) != 0) { if (rename_delete_dir_contents_and_dir(path, true) != 0) { res = error("Failed to delete contents of " + path); } path = StringPrintf("%s/Android/media/%s", extPath.c_str(), pkgname); if (delete_dir_contents_and_dir(path, true) != 0) { if (rename_delete_dir_contents_and_dir(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_and_dir(path, true) != 0) { if (rename_delete_dir_contents_and_dir(path, true) != 0) { res = error("Failed to delete contents of " + path); } } Loading Loading @@ -1551,27 +1550,27 @@ binder::Status InstalldNativeService::destroyUserData(const std::optional<std::s binder::Status res = ok(); if (flags & FLAG_STORAGE_DE) { auto path = create_data_user_de_path(uuid_, userId); if (delete_dir_contents_and_dir(path, true) != 0) { if (rename_delete_dir_contents_and_dir(path, true) != 0) { res = error("Failed to delete " + path); } if (uuid_ == nullptr) { path = create_data_misc_legacy_path(userId); if (delete_dir_contents_and_dir(path, true) != 0) { if (rename_delete_dir_contents_and_dir(path, true) != 0) { res = error("Failed to delete " + path); } path = create_primary_cur_profile_dir_path(userId); if (delete_dir_contents_and_dir(path, true) != 0) { if (rename_delete_dir_contents_and_dir(path, true) != 0) { res = error("Failed to delete " + path); } } } if (flags & FLAG_STORAGE_CE) { auto path = create_data_user_ce_path(uuid_, userId); if (delete_dir_contents_and_dir(path, true) != 0) { if (rename_delete_dir_contents_and_dir(path, true) != 0) { res = error("Failed to delete " + path); } path = findDataMediaPath(uuid, userId); if (delete_dir_contents_and_dir(path, true) != 0) { if (rename_delete_dir_contents_and_dir(path, true) != 0) { res = error("Failed to delete " + path); } } Loading Loading @@ -3190,5 +3189,18 @@ binder::Status InstalldNativeService::migrateLegacyObbData() { return ok(); } binder::Status InstalldNativeService::cleanupDeletedDirs(const std::optional<std::string>& uuid) { const char* uuid_cstr = uuid ? uuid->c_str() : nullptr; const auto users = get_known_users(uuid_cstr); for (auto userId : users) { auto ce_path = create_data_user_ce_path(uuid_cstr, userId); auto de_path = create_data_user_de_path(uuid_cstr, userId); find_and_delete_renamed_deleted_dirs_under_path(ce_path); find_and_delete_renamed_deleted_dirs_under_path(de_path); } return ok(); } } // namespace installd } // namespace android cmds/installd/InstalldNativeService.h +2 −0 Original line number Diff line number Diff line Loading @@ -185,6 +185,8 @@ public: binder::Status migrateLegacyObbData(); binder::Status cleanupDeletedDirs(const std::optional<std::string>& uuid); private: std::recursive_mutex mLock; std::unordered_map<userid_t, std::weak_ptr<std::shared_mutex>> mUserIdLock; Loading cmds/installd/binder/android/os/IInstalld.aidl +2 −0 Original line number Diff line number Diff line Loading @@ -126,6 +126,8 @@ interface IInstalld { void migrateLegacyObbData(); void cleanupDeletedDirs(@nullable @utf8InCpp String uuid); const int FLAG_STORAGE_DE = 0x1; const int FLAG_STORAGE_CE = 0x2; const int FLAG_STORAGE_EXTERNAL = 0x4; Loading Loading
cmds/dumpstate/dumpstate.cpp +0 −1 Original line number Diff line number Diff line Loading @@ -1582,7 +1582,6 @@ static Dumpstate::RunStatus dumpstate() { DumpFile("BUDDYINFO", "/proc/buddyinfo"); DumpExternalFragmentationInfo(); DumpFile("KERNEL WAKE SOURCES", "/d/wakeup_sources"); DumpFile("KERNEL CPUFREQ", "/sys/devices/system/cpu/cpu0/cpufreq/stats/time_in_state"); RunCommand("PROCESSES AND THREADS", Loading
cmds/installd/Android.bp +5 −0 Original line number Diff line number Diff line Loading @@ -10,6 +10,7 @@ package { cc_defaults { name: "installd_defaults", cpp_std: "c++2a", cflags: [ "-Wall", "-Werror", Loading Loading @@ -41,6 +42,7 @@ cc_defaults { "libbinder", "libcrypto", "libcutils", "libext2_uuid", "liblog", "liblogwrap", "libprocessgroup", Loading Loading @@ -239,6 +241,8 @@ cc_library_static { cc_binary { name: "otapreopt", cpp_std: "c++2a", cflags: [ "-Wall", "-Werror", Loading Loading @@ -268,6 +272,7 @@ cc_binary { "libbase", "libcrypto", "libcutils", "libext2_uuid", "liblog", "liblogwrap", "libprocessgroup", Loading
cmds/installd/InstalldNativeService.cpp +23 −11 Original line number Diff line number Diff line Loading @@ -957,13 +957,13 @@ binder::Status InstalldNativeService::destroyAppData(const std::optional<std::st binder::Status res = ok(); if (flags & FLAG_STORAGE_CE) { auto path = create_data_user_ce_package_path(uuid_, userId, pkgname, ceDataInode); if (delete_dir_contents_and_dir(path) != 0) { if (rename_delete_dir_contents_and_dir(path) != 0) { res = error("Failed to delete " + path); } } if (flags & FLAG_STORAGE_DE) { auto path = create_data_user_de_package_path(uuid_, userId, pkgname); if (delete_dir_contents_and_dir(path) != 0) { if (rename_delete_dir_contents_and_dir(path) != 0) { res = error("Failed to delete " + path); } if ((flags & FLAG_CLEAR_APP_DATA_KEEP_ART_PROFILES) == 0) { Loading Loading @@ -994,16 +994,15 @@ binder::Status InstalldNativeService::destroyAppData(const std::optional<std::st } auto path = StringPrintf("%s/Android/data/%s", extPath.c_str(), pkgname); if (delete_dir_contents_and_dir(path, true) != 0) { if (rename_delete_dir_contents_and_dir(path, true) != 0) { res = error("Failed to delete contents of " + path); } path = StringPrintf("%s/Android/media/%s", extPath.c_str(), pkgname); if (delete_dir_contents_and_dir(path, true) != 0) { if (rename_delete_dir_contents_and_dir(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_and_dir(path, true) != 0) { if (rename_delete_dir_contents_and_dir(path, true) != 0) { res = error("Failed to delete contents of " + path); } } Loading Loading @@ -1551,27 +1550,27 @@ binder::Status InstalldNativeService::destroyUserData(const std::optional<std::s binder::Status res = ok(); if (flags & FLAG_STORAGE_DE) { auto path = create_data_user_de_path(uuid_, userId); if (delete_dir_contents_and_dir(path, true) != 0) { if (rename_delete_dir_contents_and_dir(path, true) != 0) { res = error("Failed to delete " + path); } if (uuid_ == nullptr) { path = create_data_misc_legacy_path(userId); if (delete_dir_contents_and_dir(path, true) != 0) { if (rename_delete_dir_contents_and_dir(path, true) != 0) { res = error("Failed to delete " + path); } path = create_primary_cur_profile_dir_path(userId); if (delete_dir_contents_and_dir(path, true) != 0) { if (rename_delete_dir_contents_and_dir(path, true) != 0) { res = error("Failed to delete " + path); } } } if (flags & FLAG_STORAGE_CE) { auto path = create_data_user_ce_path(uuid_, userId); if (delete_dir_contents_and_dir(path, true) != 0) { if (rename_delete_dir_contents_and_dir(path, true) != 0) { res = error("Failed to delete " + path); } path = findDataMediaPath(uuid, userId); if (delete_dir_contents_and_dir(path, true) != 0) { if (rename_delete_dir_contents_and_dir(path, true) != 0) { res = error("Failed to delete " + path); } } Loading Loading @@ -3190,5 +3189,18 @@ binder::Status InstalldNativeService::migrateLegacyObbData() { return ok(); } binder::Status InstalldNativeService::cleanupDeletedDirs(const std::optional<std::string>& uuid) { const char* uuid_cstr = uuid ? uuid->c_str() : nullptr; const auto users = get_known_users(uuid_cstr); for (auto userId : users) { auto ce_path = create_data_user_ce_path(uuid_cstr, userId); auto de_path = create_data_user_de_path(uuid_cstr, userId); find_and_delete_renamed_deleted_dirs_under_path(ce_path); find_and_delete_renamed_deleted_dirs_under_path(de_path); } return ok(); } } // namespace installd } // namespace android
cmds/installd/InstalldNativeService.h +2 −0 Original line number Diff line number Diff line Loading @@ -185,6 +185,8 @@ public: binder::Status migrateLegacyObbData(); binder::Status cleanupDeletedDirs(const std::optional<std::string>& uuid); private: std::recursive_mutex mLock; std::unordered_map<userid_t, std::weak_ptr<std::shared_mutex>> mUserIdLock; Loading
cmds/installd/binder/android/os/IInstalld.aidl +2 −0 Original line number Diff line number Diff line Loading @@ -126,6 +126,8 @@ interface IInstalld { void migrateLegacyObbData(); void cleanupDeletedDirs(@nullable @utf8InCpp String uuid); const int FLAG_STORAGE_DE = 0x1; const int FLAG_STORAGE_CE = 0x2; const int FLAG_STORAGE_EXTERNAL = 0x4; Loading