From 0cf90d7ca07ea94a7a318aba6e4e8872e63337dd Mon Sep 17 00:00:00 2001 From: Samiul Islam Date: Fri, 11 Feb 2022 16:17:49 +0000 Subject: [PATCH] Create root directory for supplemental data during user creation In order to store supplemental data for apps, we want to create a root directory at location `/data/misc_ce//supplmental` and `/data/misc_de/supplemental`. These directories will then host supplemental data for each app based on package name, e.g, `/data/misc_ce/0/supplemental/`. Since these are sub-directories of misc directory, vold should prepare them for consistency. Bug: 217543371 Test: atest SupplementalProcessStorageHostTest Test: see ag/16681989 Ignore-AOSP-First: Feature is being developed in internal branch Change-Id: I66ef7a7241c9f82cecedaeb6c9a91f127668300a --- vold_prepare_subdirs.cpp | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/vold_prepare_subdirs.cpp b/vold_prepare_subdirs.cpp index 0d58e4d..0fe8b01 100644 --- a/vold_prepare_subdirs.cpp +++ b/vold_prepare_subdirs.cpp @@ -172,8 +172,13 @@ static bool prepare_subdirs(const std::string& volume_uuid, int user_id, int fla return false; } + auto misc_de_path = android::vold::BuildDataMiscDePath(user_id); + if (!prepare_dir_for_user(sehandle, 0771, AID_SYSTEM, AID_SYSTEM, + misc_de_path + "/supplemental", user_id)) { + return false; + } + if (volume_uuid.empty()) { - auto misc_de_path = android::vold::BuildDataMiscDePath(user_id); if (!prepare_dir(sehandle, 0700, 0, 0, misc_de_path + "/vold")) return false; if (!prepare_dir(sehandle, 0700, 0, 0, misc_de_path + "/storaged")) return false; if (!prepare_dir(sehandle, 0700, 0, 0, misc_de_path + "/rollback")) return false; @@ -203,8 +208,13 @@ static bool prepare_subdirs(const std::string& volume_uuid, int user_id, int fla return false; } + auto misc_ce_path = android::vold::BuildDataMiscCePath(user_id); + if (!prepare_dir_for_user(sehandle, 0771, AID_SYSTEM, AID_SYSTEM, + misc_ce_path + "/supplemental", user_id)) { + return false; + } + if (volume_uuid.empty()) { - auto misc_ce_path = android::vold::BuildDataMiscCePath(user_id); if (!prepare_dir(sehandle, 0700, 0, 0, misc_ce_path + "/vold")) return false; if (!prepare_dir(sehandle, 0700, 0, 0, misc_ce_path + "/storaged")) return false; if (!prepare_dir(sehandle, 0700, 0, 0, misc_ce_path + "/rollback")) return false;