Use default DSU slot name when active DSU is empty

If host system is Android Q and guest system is S, then reenable DSU in
the guest system (`adb shell gsi_tool enable -s`) would create an empty
DSU active indicator file.
In this case, use the default slot name "DSU" if DSU active indicator
file is non-existent or empty.

Bug: 172541102
Bug: 168571434
Test: Boot GSI S on Pixel Q with DSU
Test: Verify reenable DSU works
Test: adb shell gsi_tool enable -s && adb reboot
Change-Id: Ie59e4378d1aa4dca085c399a75abd4e662340030
This commit is contained in:
Yo Chiang 2020-11-09 17:45:35 +08:00
parent 3d152c926b
commit cb1d0d90af
1 changed files with 7 additions and 3 deletions

View File

@ -692,14 +692,18 @@ bool ReadFstabFromFile(const std::string& path, Fstab* fstab) {
return false;
}
if (!is_proc_mounts && !access(android::gsi::kGsiBootedIndicatorFile, F_OK)) {
// This is expected to fail if host is android Q, since Q doesn't
// support DSU slotting. The DSU "active" indicator file would be
// non-existent or empty if DSU is enabled within the guest system.
// In that case, just use the default slot name "dsu".
std::string dsu_slot;
if (!android::gsi::GetActiveDsu(&dsu_slot)) {
// This is expected to fail if host is android Q, since Q doesn't
// support DSU slotting.
// In that case, just use the default slot name "dsu".
PWARNING << __FUNCTION__ << "(): failed to get active dsu slot";
}
if (dsu_slot.empty()) {
dsu_slot = "dsu";
}
std::string lp_names;
ReadFileToString(gsi::kGsiLpNamesFile, &lp_names);
TransformFstabForDsu(fstab, dsu_slot, Split(lp_names, ","));