Whamcloud - gitweb
tune2fs: enable uninit_bg when disabling metadata_csum
authorDarrick J. Wong <darrick.wong@oracle.com>
Sun, 14 Dec 2014 02:58:26 +0000 (21:58 -0500)
committerTheodore Ts'o <tytso@mit.edu>
Sun, 14 Dec 2014 02:58:26 +0000 (21:58 -0500)
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 <darrick.wong@oracle.com>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
misc/tune2fs.c

index 31fbe55..111edaf 100644 (file)
@@ -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.