update_engine: cow estimator to use cow version
Update the estimator in update_engine to create a cow estimator based on
version described in metadata. Previously update_engine reads from a
hardcoded constant
Test: ota_from_target_files with --vabc_cow_veresion flag
Change-Id: I9ebcf7195c0bd7f3173edbba0d0252a74f06432d
diff --git a/payload_generator/cow_size_estimator.cc b/payload_generator/cow_size_estimator.cc
index 22ef609..9ab2b87 100644
--- a/payload_generator/cow_size_estimator.cc
+++ b/payload_generator/cow_size_estimator.cc
@@ -145,13 +145,13 @@
const size_t block_size,
std::string compression,
const size_t partition_size,
- const bool xor_enabled) {
+ const bool xor_enabled,
+ uint32_t cow_version) {
android::snapshot::CowOptions options{
.block_size = static_cast<uint32_t>(block_size),
.compression = std::move(compression),
.max_blocks = (partition_size / block_size)};
- auto cow_writer =
- CreateCowEstimator(android::snapshot::kCowVersionManifest, options);
+ auto cow_writer = CreateCowEstimator(cow_version, options);
CHECK_NE(cow_writer, nullptr) << "Could not create cow estimator";
CHECK(CowDryRun(source_fd,
target_fd,
diff --git a/payload_generator/cow_size_estimator.h b/payload_generator/cow_size_estimator.h
index c9fab09..7cb3485 100644
--- a/payload_generator/cow_size_estimator.h
+++ b/payload_generator/cow_size_estimator.h
@@ -37,7 +37,8 @@
const size_t block_size,
std::string compression,
const size_t partition_size,
- bool xor_enabled);
+ bool xor_enabled,
+ uint32_t cow_version);
// Convert InstallOps to CowOps and apply the converted cow op to |cow_writer|
bool CowDryRun(
diff --git a/payload_generator/delta_diff_generator.cc b/payload_generator/delta_diff_generator.cc
index b1dc693..0da929e 100644
--- a/payload_generator/delta_diff_generator.cc
+++ b/payload_generator/delta_diff_generator.cc
@@ -142,9 +142,10 @@
config_.block_size,
config_.target.dynamic_partition_metadata->vabc_compression_param(),
new_part_.size,
- config_.enable_vabc_xor);
+ config_.enable_vabc_xor,
+ config_.target.dynamic_partition_metadata->cow_version());
- // ops buffer size == 0 for v2 of cow format
+ // ops buffer size == 0 for v2 version of cow format
LOG(INFO) << "Estimated COW size for partition: " << new_part_.name << " "
<< cow_info_->cow_size
<< " ops buffer size: " << cow_info_->op_count_max;