diff options
author | David Anderson <dvander@google.com> | 2023-05-09 22:16:40 -0700 |
---|---|---|
committer | David Anderson <dvander@google.com> | 2023-06-13 19:59:13 +0000 |
commit | 8144b25bbaca703249aed9e318492219c2b0b5e1 (patch) | |
tree | a821c4a6781ff8d798af768bc24ca6ac41d69644 /aosp | |
parent | df9821b89390c9c1d028a15e4abc27d9f71aae74 (diff) | |
download | update_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.cc | 27 |
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}; |