Merge changes Ibbed6cf9,I31b36b42 into main am: 7a61f499be

Original change: https://android-review.googlesource.com/c/platform/build/+/3089653

Change-Id: Ifafb8f0cbd40829a47aa27f50189fc9e70e335e0
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Daniel Zheng
2024-05-16 20:00:29 +00:00
committed by Automerger Merge Worker
2 changed files with 35 additions and 18 deletions

View File

@@ -34,6 +34,21 @@ PRODUCT_VENDOR_PROPERTIES += ro.virtual_ab.userspace.snapshots.enabled=true
PRODUCT_VENDOR_PROPERTIES += ro.virtual_ab.io_uring.enabled=true
PRODUCT_VENDOR_PROPERTIES += ro.virtual_ab.compression.xor.enabled=true
PRODUCT_VENDOR_PROPERTIES += ro.virtual_ab.batch_writes=true
# Low memory device configurations. If memory usage and cpu utilization is
# a bottleneck during OTA, the below configurations can be added to a
# device's .mk file improve performance for low mem devices. Disabling
# ro.virtual_ab.compression.xor.enabled and ro.virtual_ab.io_uring.enabled
# is also recommended
#
# PRODUCT_VENDOR_PROPERTIES += ro.virtual_ab.o_direct.enabled=true
# PRODUCT_VENDOR_PROPERTIES += ro.virtual_ab.merge_thread_priority=19
# PRODUCT_VENDOR_PROPERTIES += ro.virtual_ab.worker_thread_priority=0
# PRODUCT_VENDOR_PROPERTIES += ro.virtual_ab.num_worker_threads=3
# PRODUCT_VENDOR_PROPERTIES += ro.virtual_ab.num_merge_threads=1
# PRODUCT_VENDOR_PROPERTIES += ro.virtual_ab.num_verify_threads=1
# PRODUCT_VENDOR_PROPERTIES += ro.virtual_ab.cow_op_merge_size=16
# PRODUCT_VENDOR_PROPERTIES += ro.virtual_ab.verify_threshold_size=1073741824
# PRODUCT_VENDOR_PROPERTIES += ro.virtual_ab.verify_block_size=1048576
# Enabling this property, will improve OTA install time
# but will use an additional CPU core

View File

@@ -914,12 +914,13 @@ def GenerateAbOtaPackage(target_file, output_file, source_file=None):
# and install time performance. All OTA's with
# both the source build and target build with VIRTUAL_AB_COW_VERSION = 3
# can support the new format. Otherwise, fallback on older versions
if not source_info.vabc_cow_version or not target_info.vabc_cow_version:
logger.info("Source or Target doesn't have VABC_COW_VERSION specified, default to version 2")
OPTIONS.vabc_cow_version = 2
elif source_info.vabc_cow_version != target_info.vabc_cow_version:
logger.info("Source and Target have different cow VABC_COW_VERSION specified, default to minimum version")
OPTIONS.vabc_cow_version = min(source_info.vabc_cow_version, target_info.vabc_cow_version)
if not OPTIONS.vabc_cow_version:
if not source_info.vabc_cow_version or not target_info.vabc_cow_version:
logger.info("Source or Target doesn't have VABC_COW_VERSION specified, default to version 2")
OPTIONS.vabc_cow_version = 2
elif source_info.vabc_cow_version != target_info.vabc_cow_version:
logger.info("Source and Target have different cow VABC_COW_VERSION specified, default to minimum version")
OPTIONS.vabc_cow_version = min(source_info.vabc_cow_version, target_info.vabc_cow_version)
# Virtual AB Compression was introduced in Androd S.
# Later, we backported VABC to Android R. But verity support was not
@@ -933,19 +934,20 @@ def GenerateAbOtaPackage(target_file, output_file, source_file=None):
assert "ab_partitions" in OPTIONS.info_dict, \
"META/ab_partitions.txt is required for ab_update."
source_info = None
if not target_info.vabc_cow_version:
if not OPTIONS.vabc_cow_version:
if not target_info.vabc_cow_version:
OPTIONS.vabc_cow_version = 2
elif target_info.vabc_cow_version >= "3" and target_info.vendor_api_level < 35:
logger.warning(
"This full OTA is configured to use VABC cow version"
" 3 which is supported since"
" Android API level 35, but device is "
"launched with {} . If this full OTA is"
" served to a device running old build, OTA might fail due to "
"unsupported vabc cow version. For safety, version 2 is used because "
"it's supported since day 1.".format(
target_info.vendor_api_level))
OPTIONS.vabc_cow_version = 2
elif target_info.vabc_cow_version >= "3" and target_info.vendor_api_level < 35:
logger.warning(
"This full OTA is configured to use VABC cow version"
" 3 which is supported since"
" Android API level 35, but device is "
"launched with {} . If this full OTA is"
" served to a device running old build, OTA might fail due to "
"unsupported vabc cow version. For safety, version 2 is used because "
"it's supported since day 1.".format(
target_info.vendor_api_level))
OPTIONS.vabc_cow_version = 2
if OPTIONS.vabc_compression_param is None and vabc_compression_param:
minimum_api_level_required = VABC_COMPRESSION_PARAM_SUPPORT[
vabc_compression_param]