diff options
author | Daniel Zheng <zhengdaniel@google.com> | 2024-01-30 19:33:34 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2024-01-30 19:33:34 +0000 |
commit | cc642af6320380e4e81117f68eeded2c47120b46 (patch) | |
tree | 597b67f91648f125e2ac13ca16f1d83a3bd686db | |
parent | 04051cd445567a193a7a7eec2fca5deab6b3ba92 (diff) | |
parent | 4ff049167edfe381966619f3123681f2e6c02138 (diff) | |
download | update_engine-cc642af6320380e4e81117f68eeded2c47120b46.tar.gz |
update_engine: use compression_factor am: 4ff049167e
Original change: https://android-review.googlesource.com/c/platform/system/update_engine/+/2901155
Change-Id: I1d7fb939a477144725456395ede51c032e219d95
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
-rw-r--r-- | payload_generator/cow_size_estimator.cc | 6 | ||||
-rw-r--r-- | payload_generator/cow_size_estimator.h | 3 | ||||
-rw-r--r-- | payload_generator/delta_diff_generator.cc | 3 | ||||
-rw-r--r-- | payload_generator/payload_generation_config.cc | 10 | ||||
-rw-r--r-- | update_metadata.proto | 4 |
5 files changed, 22 insertions, 4 deletions
diff --git a/payload_generator/cow_size_estimator.cc b/payload_generator/cow_size_estimator.cc index 9ab2b878..da4f8961 100644 --- a/payload_generator/cow_size_estimator.cc +++ b/payload_generator/cow_size_estimator.cc @@ -146,11 +146,13 @@ android::snapshot::CowSizeInfo EstimateCowSizeInfo( std::string compression, const size_t partition_size, const bool xor_enabled, - uint32_t cow_version) { + uint32_t cow_version, + uint64_t compression_factor) { android::snapshot::CowOptions options{ .block_size = static_cast<uint32_t>(block_size), .compression = std::move(compression), - .max_blocks = (partition_size / block_size)}; + .max_blocks = (partition_size / block_size), + .compression_factor = compression_factor}; auto cow_writer = CreateCowEstimator(cow_version, options); CHECK_NE(cow_writer, nullptr) << "Could not create cow estimator"; CHECK(CowDryRun(source_fd, diff --git a/payload_generator/cow_size_estimator.h b/payload_generator/cow_size_estimator.h index 7cb3485f..060da43d 100644 --- a/payload_generator/cow_size_estimator.h +++ b/payload_generator/cow_size_estimator.h @@ -38,7 +38,8 @@ android::snapshot::CowSizeInfo EstimateCowSizeInfo( std::string compression, const size_t partition_size, bool xor_enabled, - uint32_t cow_version); + uint32_t cow_version, + uint64_t compression_factor); // 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 0da929eb..fb967fde 100644 --- a/payload_generator/delta_diff_generator.cc +++ b/payload_generator/delta_diff_generator.cc @@ -143,7 +143,8 @@ class PartitionProcessor : public base::DelegateSimpleThread::Delegate { config_.target.dynamic_partition_metadata->vabc_compression_param(), new_part_.size, config_.enable_vabc_xor, - config_.target.dynamic_partition_metadata->cow_version()); + config_.target.dynamic_partition_metadata->cow_version(), + config_.target.dynamic_partition_metadata->compression_factor()); // ops buffer size == 0 for v2 version of cow format LOG(INFO) << "Estimated COW size for partition: " << new_part_.name << " " diff --git a/payload_generator/payload_generation_config.cc b/payload_generator/payload_generation_config.cc index a9741803..f9352cc3 100644 --- a/payload_generator/payload_generation_config.cc +++ b/payload_generator/payload_generation_config.cc @@ -221,6 +221,16 @@ bool ImageConfig::LoadDynamicPartitionMetadata( android::base::ParseUint(cow_version, &cow_version_num); metadata->set_cow_version(cow_version_num); } + std::string compression_factor; + if (store.GetString("virtual_ab_compression_factor", &compression_factor)) { + LOG(INFO) << "Using VABC compression factor " << compression_factor; + } else { + LOG(INFO) << "No compression factor specified. Defaulting to 4k"; + compression_factor = "4096"; + } + size_t compression_factor_value{}; + android::base::ParseUint(compression_factor, &compression_factor_value); + metadata->set_compression_factor(compression_factor_value); } dynamic_partition_metadata = std::move(metadata); return true; diff --git a/update_metadata.proto b/update_metadata.proto index 535f386b..6d16da40 100644 --- a/update_metadata.proto +++ b/update_metadata.proto @@ -372,6 +372,10 @@ message DynamicPartitionMetadata { // A collection of knobs to tune Virtual AB Compression optional VABCFeatureSet vabc_feature_set = 6; + + // Max bytes to be compressed at once during ota. Options: 4k, 8k, 16k, 32k, + // 64k, 128k + optional uint64 compression_factor = 7; } // Definition has been duplicated from |