From d76725c91386a84d342ed90ae3213cb82bee746d Mon Sep 17 00:00:00 2001 From: Christian Oder Date: Sun, 6 Sep 2020 14:54:15 +0200 Subject: [PATCH] build_image: Allow disabling custom inode count calculation This allows us to skip custom inode count calculation by setting BOARD_*IMAGE_EXTFS_INODE_COUNT to -1, this will end up letting mke2fs calculate appropriate inode count on its own. While build_image only allocates exact number of needed inodes plus 4% spare with .2% margin, mke2fs will allocate as many inodes as it thinks is appropriate given the filesystem size. Change-Id: If03d5edae8378be3b305346176067b01163f6f3d --- tools/releasetools/build_image.py | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/tools/releasetools/build_image.py b/tools/releasetools/build_image.py index 464ad9b4cc..4755aac22a 100755 --- a/tools/releasetools/build_image.py +++ b/tools/releasetools/build_image.py @@ -312,7 +312,7 @@ def BuildImageMkfs(in_dir, prop_dict, out_file, target_out, fs_config): base_fs_file = ConvertBlockMapToBaseFs(prop_dict["base_fs_file"]) build_command.extend(["-d", base_fs_file]) build_command.extend(["-L", prop_dict["mount_point"]]) - if "extfs_inode_count" in prop_dict: + if "extfs_inode_count" in prop_dict and int(prop_dict["extfs_inode_count"]) >= 0: build_command.extend(["-i", prop_dict["extfs_inode_count"]]) if "extfs_rsv_pct" in prop_dict: build_command.extend(["-M", prop_dict["extfs_rsv_pct"]]) @@ -606,19 +606,20 @@ def BuildImage(in_dir, prop_dict, out_file, target_out=None): size = common.RoundUpTo4K(size) else: size = ((size + block_size - 1) // block_size) * block_size - extfs_inode_count = prop_dict["extfs_inode_count"] - inodes = int(fs_dict.get("Inode count", extfs_inode_count)) - inodes -= int(fs_dict.get("Free inodes", "0")) - # add .2% margin or 1 inode, whichever is greater - spare_inodes = inodes * 2 // 1000 - min_spare_inodes = 1 - if spare_inodes < min_spare_inodes: - spare_inodes = min_spare_inodes - inodes += spare_inodes - prop_dict["extfs_inode_count"] = str(inodes) + if int(prop_dict["extfs_inode_count"]) >= 0: + extfs_inode_count = prop_dict["extfs_inode_count"] + inodes = int(fs_dict.get("Inode count", extfs_inode_count)) + inodes -= int(fs_dict.get("Free inodes", "0")) + # add .2% margin or 1 inode, whichever is greater + spare_inodes = inodes * 2 // 1000 + min_spare_inodes = 1 + if spare_inodes < min_spare_inodes: + spare_inodes = min_spare_inodes + inodes += spare_inodes + prop_dict["extfs_inode_count"] = str(inodes) + logger.info( + "Allocating %d Inodes for %s.", inodes, out_file) prop_dict["partition_size"] = str(size) - logger.info( - "Allocating %d Inodes for %s.", inodes, out_file) elif fs_type.startswith("f2fs") and prop_dict.get("f2fs_compress") == "true": prop_dict["partition_size"] = str(size) prop_dict["image_size"] = str(size)