Patch "ext4: fix bad checksum after online resize" has been added to the 5.15-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    ext4: fix bad checksum after online resize

to the 5.15-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     ext4-fix-bad-checksum-after-online-resize.patch
and it can be found in the queue-5.15 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit feefae41e03c249e4d62e97659c3e3f6754db737
Author: Baokun Li <libaokun1@xxxxxxxxxx>
Date:   Mon Jan 30 23:52:12 2023 +0000

    ext4: fix bad checksum after online resize
    
    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.
    
    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 <libaokun1@xxxxxxxxxx>
    Reviewed-by: Darrick J. Wong <djwong@xxxxxxxxxx>
    Reviewed-by: Jan Kara <jack@xxxxxxx>
    Cc: stable@xxxxxxxxxx
    Link: https://lore.kernel.org/r/20221117040341.1380702-2-libaokun1@xxxxxxxxxx
    Signed-off-by: Theodore Ts'o <tytso@xxxxxxx>
    Signed-off-by: Oleksandr Tymoshenko <ovt@xxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/fs/ext4/resize.c b/fs/ext4/resize.c
index 405c68085055..589ed99856f3 100644
--- a/fs/ext4/resize.c
+++ b/fs/ext4/resize.c
@@ -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,



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux