diff mbox series

[v2] ext4: Enable meta_bg only when new desc blocks are needed

Message ID 20240306073923.333086-1-srivathsa.d.dara@oracle.com
State New
Headers show
Series [v2] ext4: Enable meta_bg only when new desc blocks are needed | expand

Commit Message

Srivathsa Dara March 6, 2024, 7:39 a.m. UTC
This patch addresses an issue observed when resize_inode is disabled
and an online extension of a filesysyem is performed. When a filesystem
is expanded to a size that does not require a addition of a new
descriptor block, the meta_bg feature is being enabled even though no
part of the filesystem uses this layout.

This patch ensures that the meta_bg feature is only enabled if
any of the added block groups utilize meta_bg layout.

Signed-off-by: Srivathsa Dara <srivathsa.d.dara@oracle.com>
---
 fs/ext4/resize.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

Comments

Ritesh Harjani (IBM) March 7, 2024, 9:23 a.m. UTC | #1
Srivathsa Dara <srivathsa.d.dara@oracle.com> writes:

> This patch addresses an issue observed when resize_inode is disabled
> and an online extension of a filesysyem is performed. When a filesystem
> is expanded to a size that does not require a addition of a new
> descriptor block, the meta_bg feature is being enabled even though no
> part of the filesystem uses this layout.
>
> This patch ensures that the meta_bg feature is only enabled if
> any of the added block groups utilize meta_bg layout.
>

Makes sense to me. Please feel free to add - 

Reviewed-by: Ritesh Harjani (IBM) <ritesh.list@gmail.com>

> Signed-off-by: Srivathsa Dara <srivathsa.d.dara@oracle.com>
> ---
>  fs/ext4/resize.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/fs/ext4/resize.c b/fs/ext4/resize.c
> index 928700d57eb6..b46a1c492c3f 100644
> --- a/fs/ext4/resize.c
> +++ b/fs/ext4/resize.c
> @@ -1996,7 +1996,8 @@ int ext4_resize_fs(struct super_block *sb, ext4_fsblk_t n_blocks_count)
>  		}
>  	}
>  
> -	if ((!resize_inode && !meta_bg) || n_blocks_count == o_blocks_count) {
> +	if ((!resize_inode && !meta_bg && n_desc_blocks > o_desc_blocks) || 
> +			n_blocks_count == o_blocks_count) {
>  		err = ext4_convert_meta_bg(sb, resize_inode);
>  		if (err)
>  			goto out;
> -- 
> 2.39.3
diff mbox series

Patch

diff --git a/fs/ext4/resize.c b/fs/ext4/resize.c
index 928700d57eb6..b46a1c492c3f 100644
--- a/fs/ext4/resize.c
+++ b/fs/ext4/resize.c
@@ -1996,7 +1996,8 @@  int ext4_resize_fs(struct super_block *sb, ext4_fsblk_t n_blocks_count)
 		}
 	}
 
-	if ((!resize_inode && !meta_bg) || n_blocks_count == o_blocks_count) {
+	if ((!resize_inode && !meta_bg && n_desc_blocks > o_desc_blocks) || 
+			n_blocks_count == o_blocks_count) {
 		err = ext4_convert_meta_bg(sb, resize_inode);
 		if (err)
 			goto out;