diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2009-04-06 20:16:47 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-04-06 20:16:47 -0400 |
commit | bbae8bcc49bc4d002221dab52c79a50a82e7cd1f (patch) | |
tree | 7144a78d9f734734e977cef45c012a1cd4e98008 | |
parent | e0724bf6e4a1f2e678d2b2aab01cae22e17862f0 (diff) |
ext3: make default data ordering mode configurable
This makes the defautl ext3 data ordering mode (when no explicit
ordering is set) configurable, so as to allow people to default to
'data=writeback' and get the resulting latency improvements.
This is a non-issue if a filesystem has been explicitly set to some
ordering (with 'tune2fs').
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-rw-r--r-- | fs/ext3/Kconfig | 19 | ||||
-rw-r--r-- | fs/ext3/super.c | 8 |
2 files changed, 26 insertions, 1 deletions
diff --git a/fs/ext3/Kconfig b/fs/ext3/Kconfig index 8e0cfe44b0fc..fb3c1a21b135 100644 --- a/fs/ext3/Kconfig +++ b/fs/ext3/Kconfig | |||
@@ -28,6 +28,25 @@ config EXT3_FS | |||
28 | To compile this file system support as a module, choose M here: the | 28 | To compile this file system support as a module, choose M here: the |
29 | module will be called ext3. | 29 | module will be called ext3. |
30 | 30 | ||
31 | config EXT3_DEFAULTS_TO_ORDERED | ||
32 | bool "Default to 'data=ordered' in ext3 (legacy option)" | ||
33 | depends on EXT3_FS | ||
34 | help | ||
35 | If a filesystem does not explicitly specify a data ordering | ||
36 | mode, and the journal capability allowed it, ext3 used to | ||
37 | historically default to 'data=ordered'. | ||
38 | |||
39 | That was a rather unfortunate choice, because it leads to all | ||
40 | kinds of latency problems, and the 'data=writeback' mode is more | ||
41 | appropriate these days. | ||
42 | |||
43 | You should probably always answer 'n' here, and if you really | ||
44 | want to use 'data=ordered' mode, set it in the filesystem itself | ||
45 | with 'tune2fs -o journal_data_ordered'. | ||
46 | |||
47 | But if you really want to enable the legacy default, you can do | ||
48 | so by answering 'y' to this question. | ||
49 | |||
31 | config EXT3_FS_XATTR | 50 | config EXT3_FS_XATTR |
32 | bool "Ext3 extended attributes" | 51 | bool "Ext3 extended attributes" |
33 | depends on EXT3_FS | 52 | depends on EXT3_FS |
diff --git a/fs/ext3/super.c b/fs/ext3/super.c index 9e5b8e387e1e..599dbfe504c3 100644 --- a/fs/ext3/super.c +++ b/fs/ext3/super.c | |||
@@ -44,6 +44,12 @@ | |||
44 | #include "acl.h" | 44 | #include "acl.h" |
45 | #include "namei.h" | 45 | #include "namei.h" |
46 | 46 | ||
47 | #ifdef CONFIG_EXT3_DEFAULTS_TO_ORDERED | ||
48 | #define EXT3_MOUNT_DEFAULT_DATA_MODE EXT3_MOUNT_ORDERED_DATA | ||
49 | #else | ||
50 | #define EXT3_MOUNT_DEFAULT_DATA_MODE EXT3_MOUNT_WRITEBACK_DATA | ||
51 | #endif | ||
52 | |||
47 | static int ext3_load_journal(struct super_block *, struct ext3_super_block *, | 53 | static int ext3_load_journal(struct super_block *, struct ext3_super_block *, |
48 | unsigned long journal_devnum); | 54 | unsigned long journal_devnum); |
49 | static int ext3_create_journal(struct super_block *, struct ext3_super_block *, | 55 | static int ext3_create_journal(struct super_block *, struct ext3_super_block *, |
@@ -1919,7 +1925,7 @@ static int ext3_fill_super (struct super_block *sb, void *data, int silent) | |||
1919 | cope, else JOURNAL_DATA */ | 1925 | cope, else JOURNAL_DATA */ |
1920 | if (journal_check_available_features | 1926 | if (journal_check_available_features |
1921 | (sbi->s_journal, 0, 0, JFS_FEATURE_INCOMPAT_REVOKE)) | 1927 | (sbi->s_journal, 0, 0, JFS_FEATURE_INCOMPAT_REVOKE)) |
1922 | set_opt(sbi->s_mount_opt, ORDERED_DATA); | 1928 | set_opt(sbi->s_mount_opt, DEFAULT_DATA_MODE); |
1923 | else | 1929 | else |
1924 | set_opt(sbi->s_mount_opt, JOURNAL_DATA); | 1930 | set_opt(sbi->s_mount_opt, JOURNAL_DATA); |
1925 | break; | 1931 | break; |