[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20210812124737.21981-1-jack@suse.cz>
Date: Thu, 12 Aug 2021 14:47:37 +0200
From: Jan Kara <jack@...e.cz>
To: Ted Tso <tytso@....edu>
Cc: Boyang Xue <bxue@...hat.com>, <linux-ext4@...r.kernel.org>,
Jan Kara <jack@...e.cz>
Subject: [PATCH] ext4: Fix tune2fs checksum failure for mounted filesystem
Commit 81414b4dd48 ("ext4: remove redundant sb checksum recomputation")
removed checksum recalculation after updating superblock free space /
inode counters in ext4_fill_super() based on the fact that we will
recalculate the checksum on superblock writeout. That is correct
assumption but until the writeout happens (which can take a long time)
the checksum is incorrect in the buffer cache and if tune2fs is called
in that time window it will complain. So return back the checksum
recalculation and add a comment explaining the tune2fs peculiarity.
Fixes: 81414b4dd48f ("ext4: remove redundant sb checksum recomputation")
Reported-by: Boyang Xue <bxue@...hat.com>
Signed-off-by: Jan Kara <jack@...e.cz>
---
fs/ext4/super.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/fs/ext4/super.c b/fs/ext4/super.c
index dfa09a277b56..8f2474618f7e 100644
--- a/fs/ext4/super.c
+++ b/fs/ext4/super.c
@@ -5032,6 +5032,12 @@ static int ext4_fill_super(struct super_block *sb, void *data, int silent)
err = percpu_counter_init(&sbi->s_freeinodes_counter, freei,
GFP_KERNEL);
}
+ /*
+ * Let's update the checksum after updating free space/inode counters.
+ * Otherwise sb will have incorrect checksum in the buffer cache until
+ * sb is written out and tune2fs can get confused.
+ */
+ ext4_superblock_csum_set(sb);
if (!err)
err = percpu_counter_init(&sbi->s_dirs_counter,
ext4_count_dirs(sb), GFP_KERNEL);
--
2.26.2
Powered by blists - more mailing lists