Enable metadata encryption for userdata_gsi.
Rather than constructing a userdata fstab entry from scratch, this patch will modify the vendor fstab to preserve the desired encryption properties and filesystem type. Bug: 123906417 Test: manual test Change-Id: I338715fc62628169e8eafbf4a3125e4aadf0ff15
This commit is contained in:
parent
5bccd33e0b
commit
88045aef59
1 changed files with 29 additions and 12 deletions
|
|
@ -587,18 +587,7 @@ std::set<std::string> ExtraBootDevices(const Fstab& fstab) {
|
|||
return boot_devices;
|
||||
}
|
||||
|
||||
void EraseFstabEntry(Fstab* fstab, const std::string& mount_point) {
|
||||
auto iter = std::remove_if(fstab->begin(), fstab->end(),
|
||||
[&](const auto& entry) { return entry.mount_point == mount_point; });
|
||||
fstab->erase(iter, fstab->end());
|
||||
}
|
||||
|
||||
void TransformFstabForGsi(Fstab* fstab) {
|
||||
EraseFstabEntry(fstab, "/system");
|
||||
EraseFstabEntry(fstab, "/data");
|
||||
|
||||
fstab->emplace_back(BuildGsiSystemFstabEntry());
|
||||
|
||||
FstabEntry BuildGsiUserdataFstabEntry() {
|
||||
constexpr uint32_t kFlags = MS_NOATIME | MS_NOSUID | MS_NODEV;
|
||||
|
||||
FstabEntry userdata = {
|
||||
|
|
@ -614,6 +603,34 @@ void TransformFstabForGsi(Fstab* fstab) {
|
|||
userdata.fs_mgr_flags.quota = true;
|
||||
userdata.fs_mgr_flags.late_mount = true;
|
||||
userdata.fs_mgr_flags.formattable = true;
|
||||
return userdata;
|
||||
}
|
||||
|
||||
void EraseFstabEntry(Fstab* fstab, const std::string& mount_point) {
|
||||
auto iter = std::remove_if(fstab->begin(), fstab->end(),
|
||||
[&](const auto& entry) { return entry.mount_point == mount_point; });
|
||||
fstab->erase(iter, fstab->end());
|
||||
}
|
||||
|
||||
void TransformFstabForGsi(Fstab* fstab) {
|
||||
// Inherit fstab properties for userdata.
|
||||
FstabEntry userdata;
|
||||
if (FstabEntry* entry = GetEntryForMountPoint(fstab, "/data")) {
|
||||
userdata = *entry;
|
||||
userdata.blk_device = "userdata_gsi";
|
||||
userdata.fs_mgr_flags.logical = true;
|
||||
userdata.fs_mgr_flags.formattable = true;
|
||||
if (!userdata.key_dir.empty()) {
|
||||
userdata.key_dir += "/gsi";
|
||||
}
|
||||
} else {
|
||||
userdata = BuildGsiUserdataFstabEntry();
|
||||
}
|
||||
|
||||
EraseFstabEntry(fstab, "/system");
|
||||
EraseFstabEntry(fstab, "/data");
|
||||
|
||||
fstab->emplace_back(BuildGsiSystemFstabEntry());
|
||||
fstab->emplace_back(userdata);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue