ext4: backport online resize fix
v2 cover ext4: backport online resize fix
The following patch is required to fix the ext4 online resize in 5.15.
Baokun Li (1):
ext4: fix bad checksum after online resize
fs/ext4/resize.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
Signature · 1 line
2.39.1.456.gfc5497dd1b-goog
PATCH v2 1/1 ext4: fix bad checksum after online resize
From: Baokun Li <[email protected]>
commit a408f33e895e455f16cf964cb5cd4979b658db7b upstream.
When online resizing is performed twice consecutively, the error message "Superblock checksum does not match superblock" is displayed for the second time. Here's the reproducer:
mkfs.ext4 -F /dev/sdb 100M
mount /dev/sdb /tmp/test
resize2fs /dev/sdb 5G
resize2fs /dev/sdb 6G
To solve this issue, we moved the update of the checksum after the es->s_overhead_clusters is updated.
--- fs/ext4/resize.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
fs/ext4/resize.c +2 -2
@@ -1445,8 +1445,6 @@ static void ext4_update_super(struct super_block *sb,* active. */ ext4_r_blocks_count_set (es,ext4_r_blocks_count (es) + reserved_blocks); -ext4_superblock_csum_set (sb); -unlock_buffer (sbi->s_sbh);/* Update the free space counts */ percpu_counter_add(&sbi->s_freeclusters_counter,
@@ -1474,6 +1472,8 @@ static void ext4_update_super(struct super_block *sb,ext4_calculate_overhead (sb); es->s_overhead_clusters =cpu_to_le32 (sbi->s_overhead); +ext4_superblock_csum_set (sb); +unlock_buffer (sbi->s_sbh);if (test_opt (sb,DEBUG )) printk(KERN_DEBUG "EXT4-fs: added group %u:" "%llu blocks(%llu free %llu reserved)\n", flex_gd->count,
Signature · 1 line
2.39.1.456.gfc5497dd1b-goog
Sasha Levin
maintainerRe: [PATCH 5.15 v2 1/1] ext4: fix bad checksum after online resize
Quoted 16 lines · Oleksandr Tymoshenko
From: Baokun Li <[email protected]>
commit
a408f33e895e455f16cf964cb5cd4979b658db7bupstream.When online resizing is performed twice consecutively, the error message "Superblock checksum does not match superblock" is displayed for the second time. Here's the reproducer:
mkfs.ext4 -F
/dev/sdb100M
mount/dev/sdb/tmp/test
resize2fs/dev/sdb5G
resize2fs/dev/sdb6GTo solve this issue, we moved the update of the checksum after the
es->s_overhead_clustersis updated.
Quoted 9 lines
Fixes 026d0d27c488 ("ext4: reduce computation of overhead during resize")Fixes de394a86658f ("ext4: update s_overhead_clusters in the superblock during an on-line resize")Signed-off-by Baokun Li <[email protected]>Reviewed-by Darrick J. Wong <[email protected]>Reviewed-by Jan Kara <[email protected]>Signed-off-by Theodore Ts'o <[email protected]>Signed-off-by Oleksandr Tymoshenko <[email protected]>
I've grabbed it, thanks!
Signature · 2 lines
Thanks, Sasha