fs: sdfat: Add config option to register sdFAT for exFAT
authorPaul Keith <javelinanddart@gmail.com>
Fri, 2 Mar 2018 03:51:53 +0000 (04:51 +0100)
committerMichael Benedict <michaelbt@live.com>
Sun, 25 Aug 2019 14:16:47 +0000 (00:16 +1000)
Change-Id: Id57abf0a4bd0b433fecc622eecb383cd4ea29d17
Signed-off-by: Paul Keith <javelinanddart@gmail.com>
fs/sdfat/Kconfig
fs/sdfat/sdfat.c

index 2ab3e9921b8ca19629817e0ceb1588409a530f57..3fe86e72c40b3cddb6866843a5f68a3ccbc4fbdd 100644 (file)
@@ -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
index b25a0732125a091263d09a6be960418f28ac8fc4..9d50d0ce72de4e69c1c9f8d728c8c1b87ab4b555 100644 (file)
@@ -5051,6 +5051,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;
@@ -5089,6 +5103,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();
@@ -5118,7 +5140,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();
 }