fs: sdfat: Add config option to register sdFAT for VFAT
Change-Id: I72ba7a14b56175535884390e8601960b5d8ed1cf Signed-off-by: Paul Keith <javelinanddart@gmail.com>
This commit is contained in:
parent
2df38135b5
commit
7c92f49abf
7
Kconfig
7
Kconfig
|
|
@ -22,6 +22,13 @@ config SDFAT_USE_FOR_EXFAT
|
||||||
help
|
help
|
||||||
If you want to register sdFAT as available for exFAT, say Y.
|
If you want to register sdFAT as available for exFAT, say Y.
|
||||||
|
|
||||||
|
config SDFAT_USE_FOR_VFAT
|
||||||
|
bool "Register sdFAT as VFAT"
|
||||||
|
default n
|
||||||
|
depends on SDFAT_FS && !VFAT_FS
|
||||||
|
help
|
||||||
|
If you want to register sdFAT as available for VFAT, say Y.
|
||||||
|
|
||||||
config SDFAT_DELAYED_META_DIRTY
|
config SDFAT_DELAYED_META_DIRTY
|
||||||
bool "Enable delayed metadata dirty"
|
bool "Enable delayed metadata dirty"
|
||||||
default y
|
default y
|
||||||
|
|
|
||||||
45
sdfat.c
45
sdfat.c
|
|
@ -4456,6 +4456,12 @@ enum {
|
||||||
Opt_discard,
|
Opt_discard,
|
||||||
Opt_fs,
|
Opt_fs,
|
||||||
Opt_adj_req,
|
Opt_adj_req,
|
||||||
|
#ifdef CONFIG_SDFAT_USE_FOR_VFAT
|
||||||
|
Opt_shortname_lower,
|
||||||
|
Opt_shortname_win95,
|
||||||
|
Opt_shortname_winnt,
|
||||||
|
Opt_shortname_mixed,
|
||||||
|
#endif /* CONFIG_SDFAT_USE_FOR_VFAT */
|
||||||
};
|
};
|
||||||
|
|
||||||
static const match_table_t sdfat_tokens = {
|
static const match_table_t sdfat_tokens = {
|
||||||
|
|
@ -4484,6 +4490,12 @@ static const match_table_t sdfat_tokens = {
|
||||||
{Opt_discard, "discard"},
|
{Opt_discard, "discard"},
|
||||||
{Opt_fs, "fs=%s"},
|
{Opt_fs, "fs=%s"},
|
||||||
{Opt_adj_req, "adj_req"},
|
{Opt_adj_req, "adj_req"},
|
||||||
|
#ifdef CONFIG_SDFAT_USE_FOR_VFAT
|
||||||
|
{Opt_shortname_lower, "shortname=lower"},
|
||||||
|
{Opt_shortname_win95, "shortname=win95"},
|
||||||
|
{Opt_shortname_winnt, "shortname=winnt"},
|
||||||
|
{Opt_shortname_mixed, "shortname=mixed"},
|
||||||
|
#endif /* CONFIG_SDFAT_USE_FOR_VFAT */
|
||||||
{Opt_err, NULL}
|
{Opt_err, NULL}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -4650,6 +4662,14 @@ static int parse_options(struct super_block *sb, char *options, int silent,
|
||||||
IMSG("adjust request config is not enabled. ignore\n");
|
IMSG("adjust request config is not enabled. ignore\n");
|
||||||
#endif
|
#endif
|
||||||
break;
|
break;
|
||||||
|
#ifdef CONFIG_SDFAT_USE_FOR_VFAT
|
||||||
|
case Opt_shortname_lower:
|
||||||
|
case Opt_shortname_win95:
|
||||||
|
case Opt_shortname_mixed:
|
||||||
|
pr_warn("[SDFAT] DRAGONS AHEAD! sdFAT only understands \"shortname=winnt\"!\n");
|
||||||
|
case Opt_shortname_winnt:
|
||||||
|
break;
|
||||||
|
#endif /* CONFIG_SDFAT_USE_FOR_VFAT */
|
||||||
default:
|
default:
|
||||||
if (!silent) {
|
if (!silent) {
|
||||||
sdfat_msg(sb, KERN_ERR,
|
sdfat_msg(sb, KERN_ERR,
|
||||||
|
|
@ -4989,6 +5009,20 @@ static struct file_system_type exfat_fs_type = {
|
||||||
};
|
};
|
||||||
#endif /* CONFIG_SDFAT_USE_FOR_EXFAT */
|
#endif /* CONFIG_SDFAT_USE_FOR_EXFAT */
|
||||||
|
|
||||||
|
#ifdef CONFIG_SDFAT_USE_FOR_VFAT
|
||||||
|
static struct file_system_type vfat_fs_type = {
|
||||||
|
.owner = THIS_MODULE,
|
||||||
|
.name = "vfat",
|
||||||
|
.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_VFAT */
|
||||||
|
|
||||||
static int __init init_sdfat_fs(void)
|
static int __init init_sdfat_fs(void)
|
||||||
{
|
{
|
||||||
int err;
|
int err;
|
||||||
|
|
@ -5035,6 +5069,14 @@ static int __init init_sdfat_fs(void)
|
||||||
}
|
}
|
||||||
#endif /* CONFIG_SDFAT_USE_FOR_EXFAT */
|
#endif /* CONFIG_SDFAT_USE_FOR_EXFAT */
|
||||||
|
|
||||||
|
#ifdef CONFIG_SDFAT_USE_FOR_VFAT
|
||||||
|
err = register_filesystem(&vfat_fs_type);
|
||||||
|
if (err) {
|
||||||
|
pr_err("[SDFAT] failed to register for vfat filesystem\n");
|
||||||
|
goto error;
|
||||||
|
}
|
||||||
|
#endif /* CONFIG_SDFAT_USE_FOR_VFAT */
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
error:
|
error:
|
||||||
sdfat_statistics_uninit();
|
sdfat_statistics_uninit();
|
||||||
|
|
@ -5067,6 +5109,9 @@ static void __exit exit_sdfat_fs(void)
|
||||||
#ifdef CONFIG_SDFAT_USE_FOR_EXFAT
|
#ifdef CONFIG_SDFAT_USE_FOR_EXFAT
|
||||||
unregister_filesystem(&exfat_fs_type);
|
unregister_filesystem(&exfat_fs_type);
|
||||||
#endif /* CONFIG_SDFAT_USE_FOR_EXFAT */
|
#endif /* CONFIG_SDFAT_USE_FOR_EXFAT */
|
||||||
|
#ifdef CONFIG_SDFAT_USE_FOR_VFAT
|
||||||
|
unregister_filesystem(&vfat_fs_type);
|
||||||
|
#endif /* CONFIG_SDFAT_USE_FOR_VFAT */
|
||||||
fsapi_shutdown();
|
fsapi_shutdown();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue