ext4: Remove journal_checksum mount option and enable it by default
authorTheodore Ts'o <tytso@mit.edu>
Sat, 5 Sep 2009 16:50:43 +0000 (12:50 -0400)
committerTheodore Ts'o <tytso@mit.edu>
Sat, 5 Sep 2009 16:50:43 +0000 (12:50 -0400)
There's no real cost for the journal checksum feature, and we should
make sure it is enabled all the time.

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
Documentation/filesystems/ext4.txt
fs/ext4/ext4.h
fs/ext4/super.c

index 7be02ac..3e329db 100644 (file)
@@ -134,15 +134,9 @@ ro                         Mount filesystem read only. Note that ext4 will
                        mount options "ro,noload" can be used to prevent
                        writes to the filesystem.
 
-journal_checksum       Enable checksumming of the journal transactions.
-                       This will allow the recovery code in e2fsck and the
-                       kernel to detect corruption in the kernel.  It is a
-                       compatible change and will be ignored by older kernels.
-
 journal_async_commit   Commit block can be written to disk without waiting
                        for descriptor blocks. If enabled older kernels cannot
-                       mount the device. This will enable 'journal_checksum'
-                       internally.
+                       mount the device.
 
 journal=update         Update the ext4 file system's journal to the current
                        format.
index 81014f4..4dc64ed 100644 (file)
@@ -711,7 +711,6 @@ struct ext4_inode_info {
 #define EXT4_MOUNT_QUOTA               0x80000 /* Some quota option set */
 #define EXT4_MOUNT_USRQUOTA            0x100000 /* "old" user quota */
 #define EXT4_MOUNT_GRPQUOTA            0x200000 /* "old" group quota */
-#define EXT4_MOUNT_JOURNAL_CHECKSUM    0x800000 /* Journal checksums */
 #define EXT4_MOUNT_JOURNAL_ASYNC_COMMIT        0x1000000 /* Journal Async Commit */
 #define EXT4_MOUNT_I_VERSION            0x2000000 /* i_version support */
 #define EXT4_MOUNT_DELALLOC            0x8000000 /* Delalloc support */
index 4037fe0..f1815d3 100644 (file)
@@ -1280,11 +1280,9 @@ static int parse_options(char *options, struct super_block *sb,
                        *journal_devnum = option;
                        break;
                case Opt_journal_checksum:
-                       set_opt(sbi->s_mount_opt, JOURNAL_CHECKSUM);
-                       break;
+                       break;  /* Kept for backwards compatibility */
                case Opt_journal_async_commit:
                        set_opt(sbi->s_mount_opt, JOURNAL_ASYNC_COMMIT);
-                       set_opt(sbi->s_mount_opt, JOURNAL_CHECKSUM);
                        break;
                case Opt_noload:
                        set_opt(sbi->s_mount_opt, NOLOAD);
@@ -2751,20 +2749,14 @@ static int ext4_fill_super(struct super_block *sb, void *data, int silent)
                goto failed_mount4;
        }
 
-       if (test_opt(sb, JOURNAL_ASYNC_COMMIT)) {
-               jbd2_journal_set_features(sbi->s_journal,
-                               JBD2_FEATURE_COMPAT_CHECKSUM, 0,
+       jbd2_journal_set_features(sbi->s_journal,
+                                 JBD2_FEATURE_COMPAT_CHECKSUM, 0, 0);
+       if (test_opt(sb, JOURNAL_ASYNC_COMMIT))
+               jbd2_journal_set_features(sbi->s_journal, 0, 0,
                                JBD2_FEATURE_INCOMPAT_ASYNC_COMMIT);
-       } else if (test_opt(sb, JOURNAL_CHECKSUM)) {
-               jbd2_journal_set_features(sbi->s_journal,
-                               JBD2_FEATURE_COMPAT_CHECKSUM, 0, 0);
+       else
                jbd2_journal_clear_features(sbi->s_journal, 0, 0,
                                JBD2_FEATURE_INCOMPAT_ASYNC_COMMIT);
-       } else {
-               jbd2_journal_clear_features(sbi->s_journal,
-                               JBD2_FEATURE_COMPAT_CHECKSUM, 0,
-                               JBD2_FEATURE_INCOMPAT_ASYNC_COMMIT);
-       }
 
        /* We have now updated the journal if required, so we can
         * validate the data journaling mode. */