Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit cb13a776 authored by David Anderson's avatar David Anderson Committed by Gerrit Code Review
Browse files

Merge "Enable metadata encryption for userdata_gsi."

parents fa130f3a 88045aef
Loading
Loading
Loading
Loading
+29 −12
Original line number Diff line number Diff line
@@ -588,18 +588,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 = {
@@ -615,6 +604,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);
}