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)
committerStricted <info@stricted.net>
Thu, 11 Oct 2018 16:03:10 +0000 (18:03 +0200)
Change-Id: Id57abf0a4bd0b433fecc622eecb383cd4ea29d17
Signed-off-by: Paul Keith <javelinanddart@gmail.com>
fs/sdfat/Kconfig
fs/sdfat/sdfat.c

index de4393700d9bd5c0467f679fdc72c31b039c1528..82e0bc9d31a270df2a02e93cc87454569744a31c 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 060418bed7db0834e2190e4aaa50b103ca6b25d1..cc6908d093be4017dec3a31224ae8ba2e58ec49c 100644 (file)
@@ -4975,6 +4975,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;
@@ -5013,6 +5027,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();
@@ -5042,7 +5064,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();
 }