Do not map dynamic partitions on VABC devices
With VABC, we no longer need to map all partitions before
reading/writing, so don't try to map them.
1. modify GetPartitionDevice to return empty path for target partitions
on VABC
2. Add a separate GetMountableTargetDevice for obtaining a mountable
device path, specifically for postinstall
Test: treehugger
Change-Id: Ib1f608914fc49c677ce7389140ca79b028171191
diff --git a/payload_consumer/install_plan.cc b/payload_consumer/install_plan.cc
index 4a37836..f4bbeb4 100644
--- a/payload_consumer/install_plan.cc
+++ b/payload_consumer/install_plan.cc
@@ -109,18 +109,19 @@
for (Partition& partition : partitions) {
if (source_slot != BootControlInterface::kInvalidSlot &&
partition.source_size > 0) {
- result = boot_control->GetPartitionDevice(
- partition.name, source_slot, &partition.source_path) &&
- result;
+ TEST_AND_RETURN_FALSE(boot_control->GetPartitionDevice(
+ partition.name, source_slot, &partition.source_path));
} else {
partition.source_path.clear();
}
if (target_slot != BootControlInterface::kInvalidSlot &&
partition.target_size > 0) {
- result = boot_control->GetPartitionDevice(
- partition.name, target_slot, &partition.target_path) &&
- result;
+ auto device = boot_control->GetPartitionDevice(
+ partition.name, target_slot, source_slot);
+ TEST_AND_RETURN_FALSE(device.has_value());
+ partition.target_path = device->rw_device_path;
+ partition.postinstall_mount_device = device->mountable_device_path;
} else {
partition.target_path.clear();
}