Unmount vendor partition prior to switching slots

On some devices, having the vendor partition mounted
causes slot switching to fail ("Error getting bootctrl module")
Automatically unmount vendor partition prior to switching
slots to ensure the process completes successfully.

Use lazy unmount if Unmount_by_Path function fails.

TEST: Mount vendor partition, then switch slots.
      Vendor partition should be unmounted when
      switching completes
      
Change-Id: If6198d4693141be464749c4d423a9088753d939e
This commit is contained in:
Captain Throwback
2020-10-13 17:55:43 -04:00
parent df8436b51a
commit b60a2732d5
+12 -3
View File
@@ -1932,10 +1932,19 @@ int GUIAction::togglebacklight(std::string arg __unused)
int GUIAction::setbootslot(std::string arg)
{
operation_start("Set Boot Slot");
if (!simulate)
PartitionManager.Set_Active_Slot(arg);
else
if (!simulate) {
if (!PartitionManager.UnMount_By_Path("/vendor", false)) {
// PartitionManager failed to unmount /vendor, this should not happen,
// but in case it does, do a lazy unmount
LOGINFO("WARNING: vendor partition could not be unmounted normally!\n");
umount2("/vendor", MNT_DETACH);
PartitionManager.Set_Active_Slot(arg);
} else {
PartitionManager.Set_Active_Slot(arg);
}
} else {
simulate_progress_bar();
}
operation_end(0);
return 0;
}