fs: sdfat: Add config option to register sdFAT for exFAT
[GitHub/LineageOS/android_kernel_motorola_exynos9610.git] / fs / sdfat / sdfat.c
index 516e15129cf5b5702d5235e36dfe9ce08a02bf98..3907d6604f623a335bf87f815b6d636d6b8f37fc 100644 (file)
@@ -5177,6 +5177,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;
@@ -5219,6 +5233,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_uevent_uninit();
@@ -5258,6 +5280,10 @@ 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();
 }