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

Commit 9bbaa7bb authored by Bowgo Tsai's avatar Bowgo Tsai
Browse files

Adding GSI fstab entries when needed

In ReadFstabFromFile(), currently it always adds 'system_gsi' and
'userdata_gsi' fstab entries when running in Live GSI. As the API
might be used to load a fstab file without "/system" and/or "/data",
it's better to replace "/system" with 'system_gsi' and "/data" with
'userdata_gsi', instead of adding 'system_gsi' and 'userdata_gsi'
unconditionally.

Bug: 124640105
Test: boot a Live GSI, then `atest libfs_avb_device_test`

Change-Id: I52928f95b9ebd12ce09ffd538caf96a2de430dbc
parent f80c326d
Loading
Loading
Loading
Loading
+12 −6
Original line number Diff line number Diff line
@@ -607,10 +607,14 @@ FstabEntry BuildGsiUserdataFstabEntry() {
    return userdata;
}

void EraseFstabEntry(Fstab* fstab, const std::string& mount_point) {
bool 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; });
    if (iter != fstab->end()) {
        fstab->erase(iter, fstab->end());
        return true;
    }
    return false;
}

void TransformFstabForGsi(Fstab* fstab) {
@@ -628,12 +632,14 @@ void TransformFstabForGsi(Fstab* fstab) {
        userdata = BuildGsiUserdataFstabEntry();
    }

    EraseFstabEntry(fstab, "/system");
    EraseFstabEntry(fstab, "/data");

    if (EraseFstabEntry(fstab, "/system")) {
        fstab->emplace_back(BuildGsiSystemFstabEntry());
    }

    if (EraseFstabEntry(fstab, "/data")) {
        fstab->emplace_back(userdata);
    }
}

}  // namespace