From 64b351b88228b31b0edf09764eb578d67d91e327 Mon Sep 17 00:00:00 2001 From: David Anderson Date: Wed, 13 Oct 2021 00:20:43 -0700 Subject: [PATCH] Add pcluster and deduplication support for erofs images. This adds BOARD_xIMAGE_EROFS_PCLUSTER_SIZE and BOARD_EROFS_PCLUSTER_SIZE, which set the "pcluster size" of erofs images for individual images or all erofs images respectively. The pcluster size affects the maximum size of a physical compressed block. This also adds BOARD_EROFS_SHARE_DUP_BLOCKS, which turns on chunk support in EROFS. Bug: 201685920 Test: manual test Change-Id: I27ec0899f89890562796dd9fa567fc74182fbefb --- core/Makefile | 5 ++++- tools/releasetools/build_image.py | 8 ++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/core/Makefile b/core/Makefile index 352ab1adad..e1f20f015a 100644 --- a/core/Makefile +++ b/core/Makefile @@ -1617,7 +1617,8 @@ endef # $(2) the image prop file define add-common-ro-flags-to-image-props $(eval _var := $(call to-upper,$(1))) -$(if $(BOARD_$(_var)IMAGE_EROFS_COMPRESSOR),$(hide) echo "$(1)_erofs_compressor"$(BOARD_$(_var)IMAGE_EROFS_COMPRESSOR)" >> $(2)) +$(if $(BOARD_$(_var)IMAGE_EROFS_COMPRESSOR),$(hide) echo "$(1)_erofs_compressor=$(BOARD_$(_var)IMAGE_EROFS_COMPRESSOR)" >> $(2)) +$(if $(BOARD_$(_var)IMAGE_EROFS_PCLUSTER_SIZE),$(hide) echo "$(1)_erofs_pcluster_size=$(BOARD_$(_var)IMAGE_EROFS_PCLUSTER_SIZE)" >> $(2)) $(if $(BOARD_$(_var)IMAGE_EXTFS_INODE_COUNT),$(hide) echo "$(1)_extfs_inode_count=$(BOARD_$(_var)IMAGE_EXTFS_INODE_COUNT)" >> $(2)) $(if $(BOARD_$(_var)IMAGE_EXTFS_RSV_PCT),$(hide) echo "$(1)_extfs_rsv_pct=$(BOARD_$(_var)IMAGE_EXTFS_RSV_PCT)" >> $(2)) $(if $(BOARD_$(_var)IMAGE_F2FS_SLOAD_COMPRESS_FLAGS),$(hide) echo "$(1)_f2fs_sldc_flags=$(BOARD_$(_var)IMAGE_F2FS_SLOAD_COMPRESS_FLAGS)" >> $(2)) @@ -1697,6 +1698,8 @@ $(if $(INTERNAL_USERIMAGES_SPARSE_EROFS_FLAG),$(hide) echo "erofs_sparse_flag=$( $(if $(INTERNAL_USERIMAGES_SPARSE_SQUASHFS_FLAG),$(hide) echo "squashfs_sparse_flag=$(INTERNAL_USERIMAGES_SPARSE_SQUASHFS_FLAG)" >> $(1)) $(if $(INTERNAL_USERIMAGES_SPARSE_F2FS_FLAG),$(hide) echo "f2fs_sparse_flag=$(INTERNAL_USERIMAGES_SPARSE_F2FS_FLAG)" >> $(1)) $(if $(BOARD_EROFS_COMPRESSOR),$(hide) echo "erofs_default_compressor=$(BOARD_EROFS_COMPRESSOR)" >> $(1)) +$(if $(BOARD_EROFS_PCLUSTER_SIZE),$(hide) echo "erofs_pcluster_size=$(BOARD_EROFS_PCLUSTER_SIZE)" >> $(1)) +$(if $(BOARD_EROFS_SHARE_DUP_BLOCKS),$(hide) echo "erofs_share_dup_blocks=$(BOARD_EROFS_SHARE_DUP_BLOCKS)" >> $(1)) $(if $(BOARD_EXT4_SHARE_DUP_BLOCKS),$(hide) echo "ext4_share_dup_blocks=$(BOARD_EXT4_SHARE_DUP_BLOCKS)" >> $(1)) $(if $(BOARD_FLASH_LOGICAL_BLOCK_SIZE), $(hide) echo "flash_logical_block_size=$(BOARD_FLASH_LOGICAL_BLOCK_SIZE)" >> $(1)) $(if $(BOARD_FLASH_ERASE_BLOCK_SIZE), $(hide) echo "flash_erase_block_size=$(BOARD_FLASH_ERASE_BLOCK_SIZE)" >> $(1)) diff --git a/tools/releasetools/build_image.py b/tools/releasetools/build_image.py index d2536f1dd0..38104affa4 100755 --- a/tools/releasetools/build_image.py +++ b/tools/releasetools/build_image.py @@ -343,6 +343,10 @@ def BuildImageMkfs(in_dir, prop_dict, out_file, target_out, fs_config): build_command.extend(["-U", prop_dict["uuid"]]) if "block_list" in prop_dict: build_command.extend(["-B", prop_dict["block_list"]]) + if "erofs_pcluster_size" in prop_dict: + build_command.extend(["-P", prop_dict["erofs_pcluster_size"]]) + if "erofs_share_dup_blocks" in prop_dict: + build_command.extend(["-k", "4096"]) elif fs_type.startswith("squash"): build_command = ["mksquashfsimage.sh"] build_command.extend([in_dir, out_file]) @@ -617,6 +621,8 @@ def ImagePropFromGlobalDict(glob_dict, mount_point): common_props = ( "extfs_sparse_flag", "erofs_default_compressor", + "erofs_pcluster_size", + "erofs_share_dup_blocks", "erofs_sparse_flag", "squashfs_sparse_flag", "system_f2fs_compress", @@ -666,6 +672,8 @@ def ImagePropFromGlobalDict(glob_dict, mount_point): (True, "{}_base_fs_file", "base_fs_file"), (True, "{}_disable_sparse", "disable_sparse"), (True, "{}_erofs_compressor", "erofs_compressor"), + (True, "{}_erofs_pcluster_size", "erofs_pcluster_size"), + (True, "{}_erofs_share_dup_blocks", "erofs_share_dup_blocks"), (True, "{}_extfs_inode_count", "extfs_inode_count"), (True, "{}_f2fs_compress", "f2fs_compress"), (True, "{}_f2fs_sldc_flags", "f2fs_sldc_flags"),