[PATCH] Squashfs: Dont allocate fragment caches more than fragments

pangliyuan posted 1 patch 2 weeks, 2 days ago
fs/squashfs/super.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
[PATCH] Squashfs: Dont allocate fragment caches more than fragments
Posted by pangliyuan 2 weeks, 2 days ago
Sometimes the actual number of fragments in image is between
0 and SQUASHFS_CACHED_FRAGMENTS, which cause additional
fragment caches to be allocated.

Sets the number of fragment caches to the minimum of fragments
and SQUASHFS_CACHED_FRAGMENTS.

Signed-off-by: pangliyuan <pangliyuan1@huawei.com>
---
 fs/squashfs/super.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/fs/squashfs/super.c b/fs/squashfs/super.c
index 22e812808e5c..269c6d61bc29 100644
--- a/fs/squashfs/super.c
+++ b/fs/squashfs/super.c
@@ -405,7 +405,7 @@ static int squashfs_fill_super(struct super_block *sb, struct fs_context *fc)
 		goto check_directory_table;
 
 	msblk->fragment_cache = squashfs_cache_init("fragment",
-		SQUASHFS_CACHED_FRAGMENTS, msblk->block_size);
+		min(SQUASHFS_CACHED_FRAGMENTS, fragments), msblk->block_size);
 	if (msblk->fragment_cache == NULL) {
 		err = -ENOMEM;
 		goto failed_mount;
-- 
2.37.7
Re: [PATCH] Squashfs: Dont allocate fragment caches more than fragments
Posted by Phillip Lougher 1 week, 3 days ago
On 10/12/2024 09:08, pangliyuan wrote:
> Sometimes the actual number of fragments in image is between
> 0 and SQUASHFS_CACHED_FRAGMENTS, which cause additional
> fragment caches to be allocated.
> 
> Sets the number of fragment caches to the minimum of fragments
> and SQUASHFS_CACHED_FRAGMENTS.
> 
> Signed-off-by: pangliyuan <pangliyuan1@huawei.com>

A small but useful optimisation.

Reviewed-by: Phillip Lougher <phillip@squashfs.org.uk>

> ---
>   fs/squashfs/super.c | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/fs/squashfs/super.c b/fs/squashfs/super.c
> index 22e812808e5c..269c6d61bc29 100644
> --- a/fs/squashfs/super.c
> +++ b/fs/squashfs/super.c
> @@ -405,7 +405,7 @@ static int squashfs_fill_super(struct super_block *sb, struct fs_context *fc)
>   		goto check_directory_table;
>   
>   	msblk->fragment_cache = squashfs_cache_init("fragment",
> -		SQUASHFS_CACHED_FRAGMENTS, msblk->block_size);
> +		min(SQUASHFS_CACHED_FRAGMENTS, fragments), msblk->block_size);
>   	if (msblk->fragment_cache == NULL) {
>   		err = -ENOMEM;
>   		goto failed_mount;