From: Darrick J. Wong Date: Sun, 14 Dec 2014 02:58:26 +0000 (-0500) Subject: tune2fs: enable uninit_bg when disabling metadata_csum X-Git-Tag: v1.43-WIP-2015-05-18~112 X-Git-Url: https://git.whamcloud.com/?a=commitdiff_plain;h=052795e63094809e105ef911170a58f10919769c;p=tools%2Fe2fsprogs.git 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 --- 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.