[PATCH] ext4: kenel configuration of usage of ext3

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



The solution is equivalent to what is done to disable ext2.

This was done to avoid warning message after trying to mount as ext3.

Signed-off-by: David Gounaris <david.gounaris@xxxxxxxxxxxx>
---
 fs/ext4/Kconfig | 11 +++++++++++
 fs/ext4/super.c | 11 ++++++++++-
 2 files changed, 21 insertions(+), 1 deletion(-)

diff --git a/fs/ext4/Kconfig b/fs/ext4/Kconfig
index e38039fd96ff..c901c9429949 100644
--- a/fs/ext4/Kconfig
+++ b/fs/ext4/Kconfig
@@ -73,6 +73,17 @@ config EXT4_USE_FOR_EXT2
 	  compiled kernel size by using one file system driver for
 	  ext2, ext3, and ext4 file systems.
 
+config EXT4_USE_FOR_EXT3
+	bool "Use ext4 for ext3 file systems"
+	depends on EXT4_FS
+	depends on EXT3_FS=n
+	default y
+	help
+	  Allow the ext4 file system driver code to be used for ext3
+	  file system mounts.  This allows users to reduce their
+	  compiled kernel size by using one file system driver for
+	  ext2, ext3, and ext4 file systems.
+
 config EXT4_FS_POSIX_ACL
 	bool "Ext4 POSIX Access Control Lists"
 	depends on EXT4_FS
diff --git a/fs/ext4/super.c b/fs/ext4/super.c
index f29351c66610..c5a7258565e2 100644
--- a/fs/ext4/super.c
+++ b/fs/ext4/super.c
@@ -129,6 +129,7 @@ MODULE_ALIAS("ext2");
 #endif
 
 
+#if !defined(CONFIG_EXT3_FS) && !defined(CONFIG_EXT3_FS_MODULE) && defined(CONFIG_EXT4_USE_FOR_EXT3)
 static struct file_system_type ext3_fs_type = {
 	.owner		= THIS_MODULE,
 	.name		= "ext3",
@@ -139,6 +140,9 @@ static struct file_system_type ext3_fs_type = {
 MODULE_ALIAS_FS("ext3");
 MODULE_ALIAS("ext3");
 #define IS_EXT3_SB(sb) ((sb)->s_bdev->bd_holder == &ext3_fs_type)
+#else
+#define IS_EXT3_SB(sb) (0)
+#endif
 
 static int ext4_verify_csum_type(struct super_block *sb,
 				 struct ext4_super_block *es)
@@ -5745,6 +5749,7 @@ static inline void unregister_as_ext2(void) { }
 static inline int ext2_feature_set_ok(struct super_block *sb) { return 0; }
 #endif
 
+#if !defined(CONFIG_EXT3_FS) && !defined(CONFIG_EXT3_FS_MODULE) && defined(CONFIG_EXT4_USE_FOR_EXT3)
 static inline void register_as_ext3(void)
 {
 	int err = register_filesystem(&ext3_fs_type);
@@ -5757,7 +5762,6 @@ static inline void unregister_as_ext3(void)
 {
 	unregister_filesystem(&ext3_fs_type);
 }
-
 static inline int ext3_feature_set_ok(struct super_block *sb)
 {
 	if (ext4_has_unknown_ext3_incompat_features(sb))
@@ -5771,6 +5775,11 @@ static inline int ext3_feature_set_ok(struct super_block *sb)
 	return 1;
 }
 
+#else
+static inline void register_as_ext3(void) { }
+static inline void unregister_as_ext3(void) { }
+static inline int ext3_feature_set_ok(struct super_block *sb) { return 0; }
+#endif
 static struct file_system_type ext4_fs_type = {
 	.owner		= THIS_MODULE,
 	.name		= "ext4",
-- 
2.13.6




[Index of Archives]     [Reiser Filesystem Development]     [Ceph FS]     [Kernel Newbies]     [Security]     [Netfilter]     [Bugtraq]     [Linux FS]     [Yosemite National Park]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Device Mapper]     [Linux Media]

  Powered by Linux