aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKelvin Zhang <zhangkelvin@google.com>2022-03-25 23:11:01 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2022-03-25 23:11:01 +0000
commit9ffb6c0508ad916c60b861dbdb1644ffdb3ec396 (patch)
tree07daca8180b162eaaa2ff1b4e74f26314716d77e
parentcd28666e5681e20cc99df6c9e10e057b368ca75d (diff)
parentb7a66ff8c1f4a996cb206abfabc829c8fa869c01 (diff)
downloadupdate_engine-9ffb6c0508ad916c60b861dbdb1644ffdb3ec396.tar.gz
Support ZERO op in ota extractor am: cf323870b4 am: b7a66ff8c1
Original change: https://android-review.googlesource.com/c/platform/system/update_engine/+/2045685 Change-Id: I79c73687b0e13ca45e7f13007849a9a98d6c3a96 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
-rw-r--r--aosp/ota_extractor.cc15
1 files changed, 13 insertions, 2 deletions
diff --git a/aosp/ota_extractor.cc b/aosp/ota_extractor.cc
index aa0d8230..80bb74bf 100644
--- a/aosp/ota_extractor.cc
+++ b/aosp/ota_extractor.cc
@@ -86,8 +86,19 @@ bool ExtractImagesFromOTA(const DeltaArchiveManifest& manifest,
TEST_AND_RETURN_FALSE(utils::PReadAll(
payload_fd, blob.data(), blob.size(), op_data_offset, &bytes_read));
auto direct_writer = std::make_unique<DirectExtentWriter>(fd);
- TEST_AND_RETURN_FALSE(executor.ExecuteReplaceOperation(
- op, std::move(direct_writer), blob.data(), blob.size()));
+ if (op.type() == InstallOperation::ZERO) {
+ TEST_AND_RETURN_FALSE(executor.ExecuteZeroOrDiscardOperation(
+ op, std::move(direct_writer)));
+ } else if (op.type() == InstallOperation::REPLACE ||
+ op.type() == InstallOperation::REPLACE_BZ ||
+ op.type() == InstallOperation::REPLACE_XZ) {
+ TEST_AND_RETURN_FALSE(executor.ExecuteReplaceOperation(
+ op, std::move(direct_writer), blob.data(), blob.size()));
+ } else {
+ LOG(ERROR) << "Unsupported operation type: " << op.type() << ", "
+ << InstallOperation::Type_Name(op.type());
+ return false;
+ }
}
int err =
truncate64(output_path.c_str(), partition.new_partition_info().size());