aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Zheng <zhengdaniel@google.com>2024-01-30 19:33:34 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2024-01-30 19:33:34 +0000
commitcc642af6320380e4e81117f68eeded2c47120b46 (patch)
tree597b67f91648f125e2ac13ca16f1d83a3bd686db
parent04051cd445567a193a7a7eec2fca5deab6b3ba92 (diff)
parent4ff049167edfe381966619f3123681f2e6c02138 (diff)
downloadupdate_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.cc6
-rw-r--r--payload_generator/cow_size_estimator.h3
-rw-r--r--payload_generator/delta_diff_generator.cc3
-rw-r--r--payload_generator/payload_generation_config.cc10
-rw-r--r--update_metadata.proto4
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