Only skip operation on snapshot partitions
On Virtual A/B devices, don't skip SOURCE_COPY on
static partitions.
Test: update_engine_unittest
Test: incremental update to self
Change-Id: I5c93b501e09f50f559151eb77d83052373c90d0d
diff --git a/dynamic_partition_control_android.cc b/dynamic_partition_control_android.cc
index 4414e4b..4ad02c7 100644
--- a/dynamic_partition_control_android.cc
+++ b/dynamic_partition_control_android.cc
@@ -106,11 +106,13 @@
}
bool DynamicPartitionControlAndroid::ShouldSkipOperation(
- const InstallOperation& operation) {
+ const std::string& partition_name, const InstallOperation& operation) {
switch (operation.type()) {
case InstallOperation::SOURCE_COPY:
return target_supports_snapshot_ &&
GetVirtualAbFeatureFlag().IsEnabled() &&
+ mapped_devices_.count(partition_name +
+ SlotSuffixForSlotNumber(target_slot_)) > 0 &&
SourceCopyOperationIsClone(operation);
break;
default:
@@ -371,6 +373,9 @@
uint32_t target_slot,
const DeltaArchiveManifest& manifest,
bool update) {
+ source_slot_ = source_slot;
+ target_slot_ = target_slot;
+
if (fs_mgr_overlayfs_is_setup()) {
// Non DAP devices can use overlayfs as well.
LOG(WARNING)
@@ -675,4 +680,9 @@
return DynamicPartitionDeviceStatus::ERROR;
}
+void DynamicPartitionControlAndroid::set_fake_mapped_devices(
+ const std::set<std::string>& fake) {
+ mapped_devices_ = fake;
+}
+
} // namespace chromeos_update_engine