Don't clear previous partitions in DeltaPerformer.
am: d2ff2a0ee8
Change-Id: Ib56fd9525361f80508f13ba50fe004ac2370ed8c
diff --git a/payload_consumer/delta_performer.cc b/payload_consumer/delta_performer.cc
index b14a54f..84048eb 100644
--- a/payload_consumer/delta_performer.cc
+++ b/payload_consumer/delta_performer.cc
@@ -335,10 +335,14 @@
return false;
const PartitionUpdate& partition = partitions_[current_partition_];
+ size_t num_previous_partitions =
+ install_plan_->partitions.size() - partitions_.size();
+ const InstallPlan::Partition& install_part =
+ install_plan_->partitions[num_previous_partitions + current_partition_];
// Open source fds if we have a delta payload with minor version >= 2.
if (install_plan_->payload_type == InstallPayloadType::kDelta &&
GetMinorVersion() != kInPlaceMinorPayloadVersion) {
- source_path_ = install_plan_->partitions[current_partition_].source_path;
+ source_path_ = install_part.source_path;
int err;
source_fd_ = OpenFile(source_path_.c_str(), O_RDONLY, &err);
if (!source_fd_) {
@@ -350,7 +354,7 @@
}
}
- target_path_ = install_plan_->partitions[current_partition_].target_path;
+ target_path_ = install_part.target_path;
int err;
target_fd_ = OpenFile(target_path_.c_str(), O_RDWR, &err);
if (!target_fd_) {
@@ -366,8 +370,7 @@
<< "\"";
// Discard the end of the partition, but ignore failures.
- DiscardPartitionTail(
- target_fd_, install_plan_->partitions[current_partition_].target_size);
+ DiscardPartitionTail(target_fd_, install_part.target_size);
return true;
}
@@ -831,7 +834,6 @@
// Fill in the InstallPlan::partitions based on the partitions from the
// payload.
- install_plan_->partitions.clear();
for (const auto& partition : partitions_) {
InstallPlan::Partition install_part;
install_part.name = partition.partition_name();
diff --git a/payload_consumer/delta_performer_integration_test.cc b/payload_consumer/delta_performer_integration_test.cc
index 80d4dc3..a3f653b 100644
--- a/payload_consumer/delta_performer_integration_test.cc
+++ b/payload_consumer/delta_performer_integration_test.cc
@@ -763,9 +763,8 @@
state->old_kernel_data,
&kernel_part.source_hash));
- // This partitions are normally filed by the FilesystemVerifierAction with
- // the source hashes used for deltas.
- install_plan->partitions = {root_part, kernel_part};
+ // The partitions should be empty before DeltaPerformer.
+ install_plan->partitions.clear();
// With minor version 2, we want the target to be the new image, result_img,
// but with version 1, we want to update A in place.