Merge "Adjust the size computation for reserved blocks" into mnc-dev
This commit is contained in:
commit
7102f57781
2 changed files with 36 additions and 1 deletions
|
@ -729,6 +729,8 @@ $(if $(INTERNAL_USERIMAGES_EXT_VARIANT),$(hide) echo "fs_type=$(INTERNAL_USERIMA
|
|||
$(if $(BOARD_SYSTEMIMAGE_PARTITION_SIZE),$(hide) echo "system_size=$(BOARD_SYSTEMIMAGE_PARTITION_SIZE)" >> $(1))
|
||||
$(if $(BOARD_SYSTEMIMAGE_FILE_SYSTEM_TYPE),$(hide) echo "system_fs_type=$(BOARD_SYSTEMIMAGE_FILE_SYSTEM_TYPE)" >> $(1))
|
||||
$(if $(BOARD_SYSTEMIMAGE_JOURNAL_SIZE),$(hide) echo "system_journal_size=$(BOARD_SYSTEMIMAGE_JOURNAL_SIZE)" >> $(1))
|
||||
$(if $(BOARD_HAS_EXT4_RESERVED_BLOCKS),$(hide) echo "has_ext4_reserved_blocks=$(BOARD_HAS_EXT4_RESERVED_BLOCKS)" >> $(1))
|
||||
$(if $(BOARD_FLASH_BLOCK_SIZE),$(hide) echo "blocksize=$(BOARD_FLASH_BLOCK_SIZE)" >> $(1))
|
||||
$(if $(BOARD_USERDATAIMAGE_FILE_SYSTEM_TYPE),$(hide) echo "userdata_fs_type=$(BOARD_USERDATAIMAGE_FILE_SYSTEM_TYPE)" >> $(1))
|
||||
$(if $(BOARD_USERDATAIMAGE_PARTITION_SIZE),$(hide) echo "userdata_size=$(BOARD_USERDATAIMAGE_PARTITION_SIZE)" >> $(1))
|
||||
$(if $(BOARD_CACHEIMAGE_FILE_SYSTEM_TYPE),$(hide) echo "cache_fs_type=$(BOARD_CACHEIMAGE_FILE_SYSTEM_TYPE)" >> $(1))
|
||||
|
@ -991,7 +993,15 @@ define build-systemimage-target
|
|||
$(TARGET_OUT) $(systemimage_intermediates)/system_image_info.txt $(1) \
|
||||
|| ( echo "Out of space? the tree size of $(TARGET_OUT) is (MB): " 1>&2 ;\
|
||||
du -sm $(TARGET_OUT) 1>&2;\
|
||||
echo "The max is $$(( $(BOARD_SYSTEMIMAGE_PARTITION_SIZE) / 1048576 )) MB." 1>&2 ;\
|
||||
if [ "$(INTERNAL_USERIMAGES_EXT_VARIANT)" == "ext4" ]; then \
|
||||
maxsize=$(BOARD_SYSTEMIMAGE_PARTITION_SIZE); \
|
||||
if [ "$(BOARD_HAS_EXT4_RESERVED_BLOCKS)" == "true" ]; then \
|
||||
maxsize=$$((maxsize - 4096 * 4096)); \
|
||||
fi; \
|
||||
echo "The max is $$(( maxsize / 1048576 )) MB." 1>&2 ;\
|
||||
else \
|
||||
echo "The max is $$(( $(BOARD_SYSTEMIMAGE_PARTITION_SIZE) / 1048576 )) MB." 1>&2 ;\
|
||||
fi; \
|
||||
mkdir -p $(DIST_DIR); cp $(INSTALLED_FILES_FILE) $(DIST_DIR)/installed-files-rescued.txt; \
|
||||
exit 1 )
|
||||
endef
|
||||
|
@ -1473,6 +1483,9 @@ endif
|
|||
ifdef BOARD_RECOVERYIMAGE_PARTITION_SIZE
|
||||
$(hide) echo "recovery_size=$(BOARD_RECOVERYIMAGE_PARTITION_SIZE)" >> $(zip_root)/META/misc_info.txt
|
||||
endif
|
||||
ifdef BOARD_HAS_EXT4_RESERVED_BLOCKS
|
||||
$(hide) echo "has_ext4_reserved_blocks=$(BOARD_HAS_EXT4_RESERVED_BLOCKS)" >> $(zip_root)/META/misc_info.txt
|
||||
endif
|
||||
ifdef TARGET_RECOVERY_FSTYPE_MOUNT_OPTIONS
|
||||
@# TARGET_RECOVERY_FSTYPE_MOUNT_OPTIONS can be empty to indicate that nothing but defaults should be used.
|
||||
$(hide) echo "recovery_mount_options=$(TARGET_RECOVERY_FSTYPE_MOUNT_OPTIONS)" >> $(zip_root)/META/misc_info.txt
|
||||
|
|
|
@ -255,6 +255,22 @@ def BuildImage(in_dir, prop_dict, out_file):
|
|||
prop_dict["partition_size"] = str(adjusted_size)
|
||||
prop_dict["original_partition_size"] = str(partition_size)
|
||||
|
||||
# Bug: 21522719, 22023465
|
||||
# There are some reserved blocks on ext4 FS (lesser of 4096 blocks and 2%).
|
||||
# We need to deduct those blocks from the available space, since they are
|
||||
# not writable even with root privilege. It only affects devices using
|
||||
# file-based OTA and a kernel version of 3.10 or greater (currently just
|
||||
# sprout).
|
||||
reserved_blocks = prop_dict.get("has_ext4_reserved_blocks") == "true"
|
||||
if reserved_blocks and fs_type.startswith("ext4"):
|
||||
partition_size = int(prop_dict.get("partition_size"))
|
||||
block_size = int(prop_dict.get("blocksize"))
|
||||
reserved_size = min(4096 * block_size, int(partition_size * 0.02))
|
||||
adjusted_size = partition_size - reserved_size
|
||||
if not prop_dict.has_key("original_partition_size"):
|
||||
prop_dict["original_partition_size"] = str(partition_size)
|
||||
prop_dict["partition_size"] = str(adjusted_size)
|
||||
|
||||
if fs_type.startswith("ext"):
|
||||
build_command = ["mkuserimg.sh"]
|
||||
if "extfs_sparse_flag" in prop_dict:
|
||||
|
@ -386,6 +402,8 @@ def ImagePropFromGlobalDict(glob_dict, mount_point):
|
|||
copy_prop("system_verity_block_device", "verity_block_device")
|
||||
copy_prop("system_root_image", "system_root_image")
|
||||
copy_prop("ramdisk_dir", "ramdisk_dir")
|
||||
copy_prop("has_ext4_reserved_blocks", "has_ext4_reserved_blocks")
|
||||
copy_prop("blocksize", "blocksize")
|
||||
elif mount_point == "data":
|
||||
# Copy the generic fs type first, override with specific one if available.
|
||||
copy_prop("fs_type", "fs_type")
|
||||
|
@ -399,10 +417,14 @@ def ImagePropFromGlobalDict(glob_dict, mount_point):
|
|||
copy_prop("vendor_size", "partition_size")
|
||||
copy_prop("vendor_journal_size", "journal_size")
|
||||
copy_prop("vendor_verity_block_device", "verity_block_device")
|
||||
copy_prop("has_ext4_reserved_blocks", "has_ext4_reserved_blocks")
|
||||
copy_prop("blocksize", "blocksize")
|
||||
elif mount_point == "oem":
|
||||
copy_prop("fs_type", "fs_type")
|
||||
copy_prop("oem_size", "partition_size")
|
||||
copy_prop("oem_journal_size", "journal_size")
|
||||
copy_prop("has_ext4_reserved_blocks", "has_ext4_reserved_blocks")
|
||||
copy_prop("blocksize", "blocksize")
|
||||
|
||||
return d
|
||||
|
||||
|
|
Loading…
Reference in a new issue