aboutsummaryrefslogtreecommitdiff
path: root/fs
diff options
context:
space:
mode:
authorPaul Keith <javelinanddart@gmail.com>2018-03-02 04:51:53 +0100
committerMoyster <oysterized@gmail.com>2018-12-02 01:34:10 +0100
commit796e4cc1081eea0d3ca72d91b48a7e27a4cfb07d (patch)
treeddbfd7181e1465851757b14b9b7ea7f0bff4d25b /fs
parentd9dbee633b72abf9ac55b323b7552c30c224a51a (diff)
fs: sdfat: Add config option to register sdFAT for exFAT
Change-Id: Id57abf0a4bd0b433fecc622eecb383cd4ea29d17 Signed-off-by: Paul Keith <javelinanddart@gmail.com>
Diffstat (limited to 'fs')
-rw-r--r--fs/sdfat/Kconfig7
-rw-r--r--fs/sdfat/sdfat.c26
2 files changed, 32 insertions, 1 deletions
diff --git a/fs/sdfat/Kconfig b/fs/sdfat/Kconfig
index 417ff432d..90265a198 100644
--- a/fs/sdfat/Kconfig
+++ b/fs/sdfat/Kconfig
@@ -15,6 +15,13 @@ config SDFAT_FS
To compile this as a module, choose M here: the module will be called
sdfat_core and sdfat_fs.
+config SDFAT_USE_FOR_EXFAT
+ bool "Register sdFAT as exFAT"
+ default y
+ depends on SDFAT_FS && !EXFAT_FS
+ help
+ If you want to register sdFAT as available for exFAT, say Y.
+
config SDFAT_DELAYED_META_DIRTY
bool "Enable delayed metadata dirty"
default y
diff --git a/fs/sdfat/sdfat.c b/fs/sdfat/sdfat.c
index 1837ea5a1..0829f4d83 100644
--- a/fs/sdfat/sdfat.c
+++ b/fs/sdfat/sdfat.c
@@ -4978,6 +4978,20 @@ static struct file_system_type sdfat_fs_type = {
.fs_flags = FS_REQUIRES_DEV,
};
+#ifdef CONFIG_SDFAT_USE_FOR_EXFAT
+static struct file_system_type exfat_fs_type = {
+ .owner = THIS_MODULE,
+ .name = "exfat",
+ .mount = sdfat_fs_mount,
+#ifdef CONFIG_SDFAT_DBG_IOCTL
+ .kill_sb = sdfat_debug_kill_sb,
+#else
+ .kill_sb = kill_block_super,
+#endif /* CONFIG_SDFAT_DBG_IOCTL */
+ .fs_flags = FS_REQUIRES_DEV,
+};
+#endif /* CONFIG_SDFAT_USE_FOR_EXFAT */
+
static int __init init_sdfat_fs(void)
{
int err;
@@ -5016,6 +5030,14 @@ static int __init init_sdfat_fs(void)
goto error;
}
+#ifdef CONFIG_SDFAT_USE_FOR_EXFAT
+ err = register_filesystem(&exfat_fs_type);
+ if (err) {
+ pr_err("[SDFAT] failed to register for exfat filesystem\n");
+ goto error;
+ }
+#endif /* CONFIG_SDFAT_USE_FOR_EXFAT */
+
return 0;
error:
sdfat_statistics_uninit();
@@ -5045,7 +5067,9 @@ static void __exit exit_sdfat_fs(void)
sdfat_destroy_inodecache();
unregister_filesystem(&sdfat_fs_type);
-
+#ifdef CONFIG_SDFAT_USE_FOR_EXFAT
+ unregister_filesystem(&exfat_fs_type);
+#endif /* CONFIG_SDFAT_USE_FOR_EXFAT */
fsapi_shutdown();
}