aboutsummaryrefslogtreecommitdiff
path: root/aosp
diff options
context:
space:
mode:
authorDavid Anderson <dvander@google.com>2023-05-09 22:16:40 -0700
committerDavid Anderson <dvander@google.com>2023-06-13 19:59:13 +0000
commit8144b25bbaca703249aed9e318492219c2b0b5e1 (patch)
treea821c4a6781ff8d798af768bc24ca6ac41d69644 /aosp
parentdf9821b89390c9c1d028a15e4abc27d9f71aae74 (diff)
downloadupdate_engine-8144b25bbaca703249aed9e318492219c2b0b5e1.tar.gz
Refactor for new libsnapshot_cow API.
- Don't use CowWriter directly, use ICowWriter. - Instantiate based on manifest version. - Replace Emit* calls with Add*. - Remove manual initialization. Bug: 280529365 Test: update_engine_unittests ota applies Change-Id: I9c9ac5e45c260b2dca8c41c4718f9667adf90c54
Diffstat (limited to 'aosp')
-rw-r--r--aosp/cow_converter.cc27
1 files changed, 16 insertions, 11 deletions
diff --git a/aosp/cow_converter.cc b/aosp/cow_converter.cc
index b9ec00a6..80d161f8 100644
--- a/aosp/cow_converter.cc
+++ b/aosp/cow_converter.cc
@@ -35,7 +35,6 @@
#include "update_engine/payload_generator/cow_size_estimator.h"
#include "update_engine/update_metadata.pb.h"
-using android::snapshot::CowWriter;
DEFINE_string(partitions,
"",
"Comma separated list of partitions to extract, leave empty for "
@@ -43,9 +42,10 @@ DEFINE_string(partitions,
namespace chromeos_update_engine {
-bool ProcessPartition(const chromeos_update_engine::PartitionUpdate& partition,
- const char* image_dir,
- size_t block_size) {
+bool ProcessPartition(
+ const chromeos_update_engine::DeltaArchiveManifest& manifest,
+ const chromeos_update_engine::PartitionUpdate& partition,
+ const char* image_dir) {
base::FilePath img_dir{image_dir};
auto target_img = img_dir.Append(partition.partition_name() + ".img");
auto output_cow = img_dir.Append(partition.partition_name() + ".cow");
@@ -61,18 +61,23 @@ bool ProcessPartition(const chromeos_update_engine::PartitionUpdate& partition,
return false;
}
- android::snapshot::CowWriter cow_writer{
- {.block_size = static_cast<uint32_t>(block_size), .compression = "gz"}};
- TEST_AND_RETURN_FALSE(cow_writer.Initialize(output_fd));
+ const auto& dap = manifest.dynamic_partition_metadata();
+
+ android::snapshot::CowOptions options{
+ .block_size = static_cast<uint32_t>(manifest.block_size()),
+ .compression = dap.vabc_compression_param()};
+ auto cow_writer = android::snapshot::CreateCowWriter(
+ dap.cow_version(), options, std::move(output_fd));
+ TEST_AND_RETURN_FALSE(cow_writer);
TEST_AND_RETURN_FALSE(CowDryRun(nullptr,
target_img_fd,
partition.operations(),
partition.merge_operations(),
- block_size,
- &cow_writer,
+ manifest.block_size(),
+ cow_writer.get(),
partition.new_partition_info().size(),
false));
- TEST_AND_RETURN_FALSE(cow_writer.Finalize());
+ TEST_AND_RETURN_FALSE(cow_writer->Finalize());
return true;
}
@@ -148,7 +153,7 @@ int main(int argc, char* argv[]) {
continue;
}
LOG(INFO) << partition.partition_name();
- if (!ProcessPartition(partition, images_dir, manifest.block_size())) {
+ if (!ProcessPartition(manifest, partition, images_dir)) {
return 6;
}
base::FilePath img_dir{images_dir};