action: Only unmount /vendor if it actually exists

* Since commit 168bc4caaedfdf655a71ba24a1c5a7f2b905a122 the vendor partition gets unmounted prior to switching the slots. However, devices without a vendor partition (e.g. tissot's stock partition table) will have errors since the partition doesn't actually exist
* Therefore, it should be only mounted if that partition exists in the partition table

Change-Id: Id16ab55e25d05964ca0de1bf218914d66c2b0205
This commit is contained in:
LinkBoi00
2021-11-16 08:56:12 +02:00
committed by aguerosueingservices
parent 989dee2ac8
commit f5547386da
+8 -8
View File
@@ -1942,15 +1942,15 @@ int GUIAction::setbootslot(std::string arg)
{
operation_start("Set Boot Slot");
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);
if (PartitionManager.Find_Partition_By_Path("/vendor")) {
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 {
simulate_progress_bar();
}