From 052795e63094809e105ef911170a58f10919769c Mon Sep 17 00:00:00 2001 From: "Darrick J. Wong" Date: Sat, 13 Dec 2014 21:58:26 -0500 Subject: [PATCH] tune2fs: enable uninit_bg when disabling metadata_csum If we're disabling metadata_csum and the user doesn't provide explicit instructions to enable or disable uninit_bg, assume that they want uninit_bg to be turned on by default. Otherwise, we lose all block group flags and unused inode count, which is a big hit to performance. Signed-off-by: Darrick J. Wong Signed-off-by: Theodore Ts'o --- misc/tune2fs.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/misc/tune2fs.c b/misc/tune2fs.c index 31fbe55..111edaf 100644 --- a/misc/tune2fs.c +++ b/misc/tune2fs.c @@ -1141,12 +1141,26 @@ mmp_error: if (FEATURE_OFF(E2P_FEATURE_RO_INCOMPAT, EXT4_FEATURE_RO_COMPAT_METADATA_CSUM)) { + __u32 test_features[3]; + if (check_fsck_needed(fs)) exit(1); if (mount_flags & EXT2_MF_MOUNTED) fputs(_("Cannot disable metadata_csum on a mounted " "filesystem!\n"), stderr); rewrite_checksums = 1; + + /* Enable uninit_bg unless the user expressly turned it off */ + memcpy(test_features, old_features, sizeof(test_features)); + test_features[E2P_FEATURE_RO_INCOMPAT] |= + EXT4_FEATURE_RO_COMPAT_GDT_CSUM; + e2p_edit_feature2(features, test_features, ok_features, + clear_ok_features, NULL, NULL); + if (test_features[E2P_FEATURE_RO_INCOMPAT] & + EXT4_FEATURE_RO_COMPAT_GDT_CSUM) + fs->super->s_feature_ro_compat |= + EXT4_FEATURE_RO_COMPAT_GDT_CSUM; + /* * If we're turning off metadata_csum and not turning on * uninit_bg, rewrite group desc. -- 1.8.3.1