DynamicPartitionControl: Load metadata correctly for downgrading Virtual A/B
When applying a downgrade package on a Virtual A/B device
(to a non-Virtual A/B build), source slot partitions must
be kept in the metadata.
Test: apply downgrade package
Bug: 138258570
Change-Id: If083538b3db10e56c6255686ca63b97007bea9d5
diff --git a/dynamic_partition_control_android.cc b/dynamic_partition_control_android.cc
index 90e489a..a8210cf 100644
--- a/dynamic_partition_control_android.cc
+++ b/dynamic_partition_control_android.cc
@@ -257,8 +257,12 @@
builder =
MetadataBuilder::New(PartitionOpener(), super_device, source_slot);
} else {
- builder = MetadataBuilder::NewForUpdate(
- PartitionOpener(), super_device, source_slot, target_slot);
+ bool always_keep_source_slot = !target_supports_snapshot_;
+ builder = MetadataBuilder::NewForUpdate(PartitionOpener(),
+ super_device,
+ source_slot,
+ target_slot,
+ always_keep_source_slot);
}
if (builder == nullptr) {