1#
2# Copyright (C) 2022 The Android Open-Source Project
3#
4# Licensed under the Apache License, Version 2.0 (the "License");
5# you may not use this file except in compliance with the License.
6# You may obtain a copy of the License at
7#
8#      http://www.apache.org/licenses/LICENSE-2.0
9#
10# Unless required by applicable law or agreed to in writing, software
11# distributed under the License is distributed on an "AS IS" BASIS,
12# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13# See the License for the specific language governing permissions and
14# limitations under the License.
15
16# This file enables baseline features, such as io_uring,
17# userspace merge, etc. But sets compression method to none.
18# This .mk file also removes snapuserd from vendor ramdisk,
19# as T launching devices will have init_boot which has snapuserd
20# in generic ramdisk.
21#
22# T and U launching devices should include this .mk file, and configure
23# compression algorithm by setting
24# PRODUCT_VIRTUAL_AB_COMPRESSION_METHOD to lz4, gz or brotli. Complete
25# set of supported algorithms can be found in
26# system/core/fs_mgr/libsnapshot/cow_writer.cpp
27
28PRODUCT_VIRTUAL_AB_OTA := true
29
30PRODUCT_VENDOR_PROPERTIES += ro.virtual_ab.enabled=true
31
32PRODUCT_VENDOR_PROPERTIES += ro.virtual_ab.compression.enabled=true
33PRODUCT_VENDOR_PROPERTIES += ro.virtual_ab.userspace.snapshots.enabled=true
34PRODUCT_VENDOR_PROPERTIES += ro.virtual_ab.io_uring.enabled=true
35PRODUCT_VENDOR_PROPERTIES += ro.virtual_ab.compression.xor.enabled=true
36PRODUCT_VENDOR_PROPERTIES += ro.virtual_ab.batch_writes=true
37# Low memory device configurations. If memory usage and cpu utilization is
38# a bottleneck during OTA, the below configurations can be added to a
39# device's .mk file improve performance for low mem devices. Disabling
40# ro.virtual_ab.compression.xor.enabled and ro.virtual_ab.io_uring.enabled
41# is also recommended
42#
43# PRODUCT_VENDOR_PROPERTIES += ro.virtual_ab.o_direct.enabled=true
44# PRODUCT_VENDOR_PROPERTIES += ro.virtual_ab.merge_thread_priority=19
45# PRODUCT_VENDOR_PROPERTIES += ro.virtual_ab.worker_thread_priority=0
46# PRODUCT_VENDOR_PROPERTIES += ro.virtual_ab.num_worker_threads=3
47# PRODUCT_VENDOR_PROPERTIES += ro.virtual_ab.num_merge_threads=1
48# PRODUCT_VENDOR_PROPERTIES += ro.virtual_ab.num_verify_threads=1
49# PRODUCT_VENDOR_PROPERTIES += ro.virtual_ab.cow_op_merge_size=16
50# PRODUCT_VENDOR_PROPERTIES += ro.virtual_ab.verify_threshold_size=1073741824
51# PRODUCT_VENDOR_PROPERTIES += ro.virtual_ab.verify_block_size=1048576
52
53# Enabling this property, will improve OTA install time
54# but will use an additional CPU core
55# PRODUCT_VENDOR_PROPERTIES += ro.virtual_ab.compression.threads=true
56ifndef PRODUCT_VIRTUAL_AB_COMPRESSION_FACTOR
57    PRODUCT_VIRTUAL_AB_COMPRESSION_FACTOR := 65536
58endif
59
60PRODUCT_VIRTUAL_AB_COMPRESSION := true
61PRODUCT_VIRTUAL_AB_COMPRESSION_METHOD ?= none
62PRODUCT_PACKAGES += \
63    snapuserd \
64
65