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

Commit 165d9aee authored by Yo Chiang's avatar Yo Chiang
Browse files

Call GetDsuMetadataKeyDir() for DSU metadata encryption dir

So DSU system don't use a hard-coded metadata key dir.

Bug: 168571434
Test: Install and boot a DSU system.
Change-Id: I096ef46a6f7b2d9fc42882288519fc5b93df1f41
parent 2b1c37a3
Loading
Loading
Loading
Loading
+9 −3
Original line number Diff line number Diff line
@@ -583,7 +583,8 @@ bool EraseFstabEntry(Fstab* fstab, const std::string& mount_point) {

}  // namespace

void TransformFstabForDsu(Fstab* fstab, const std::vector<std::string>& dsu_partitions) {
void TransformFstabForDsu(Fstab* fstab, const std::string& dsu_slot,
                          const std::vector<std::string>& dsu_partitions) {
    static constexpr char kDsuKeysDir[] = "/avb";
    // Convert userdata
    // Inherit fstab properties for userdata.
@@ -594,7 +595,7 @@ void TransformFstabForDsu(Fstab* fstab, const std::vector<std::string>& dsu_part
        userdata.fs_mgr_flags.logical = true;
        userdata.fs_mgr_flags.formattable = true;
        if (!userdata.metadata_key_dir.empty()) {
            userdata.metadata_key_dir += "/gsi";
            userdata.metadata_key_dir = android::gsi::GetDsuMetadataKeyDir(dsu_slot);
        }
    } else {
        userdata = BuildDsuUserdataFstabEntry();
@@ -687,9 +688,14 @@ bool ReadFstabFromFile(const std::string& path, Fstab* fstab) {
        return false;
    }
    if (!is_proc_mounts && !access(android::gsi::kGsiBootedIndicatorFile, F_OK)) {
        std::string dsu_slot;
        if (!android::gsi::GetActiveDsu(&dsu_slot)) {
            PERROR << __FUNCTION__ << "(): failed to get active dsu slot";
            return false;
        }
        std::string lp_names;
        ReadFileToString(gsi::kGsiLpNamesFile, &lp_names);
        TransformFstabForDsu(fstab, Split(lp_names, ","));
        TransformFstabForDsu(fstab, dsu_slot, Split(lp_names, ","));
    }

#ifndef NO_SKIP_MOUNT
+2 −1
Original line number Diff line number Diff line
@@ -113,7 +113,8 @@ std::vector<FstabEntry*> GetEntriesForMountPoint(Fstab* fstab, const std::string
//     dsu_partitions[0] = "system_gsi"
//     dsu_partitions[1] = "userdata_gsi"
//     dsu_partitions[2] = ...
void TransformFstabForDsu(Fstab* fstab, const std::vector<std::string>& dsu_partitions);
void TransformFstabForDsu(Fstab* fstab, const std::string& dsu_slot,
                          const std::vector<std::string>& dsu_partitions);

std::set<std::string> GetBootDevices();

+1 −1
Original line number Diff line number Diff line
@@ -613,7 +613,7 @@ void FirstStageMount::UseDsuIfPresent() {
    }
    // Publish the logical partition names for TransformFstabForDsu
    WriteFile(gsi::kGsiLpNamesFile, lp_names);
    TransformFstabForDsu(&fstab_, dsu_partitions);
    TransformFstabForDsu(&fstab_, active_dsu, dsu_partitions);
}

bool FirstStageMountVBootV1::GetDmVerityDevices(std::set<std::string>* devices) {