|
@@ -814,8 +814,6 @@ static int fat_show_options(struct seq_file *m, struct dentry *root)
|
|
|
seq_puts(m, ",usefree");
|
|
|
if (opts->quiet)
|
|
|
seq_puts(m, ",quiet");
|
|
|
- if (opts->nfs)
|
|
|
- seq_puts(m, ",nfs");
|
|
|
if (opts->showexec)
|
|
|
seq_puts(m, ",showexec");
|
|
|
if (opts->sys_immutable)
|
|
@@ -849,6 +847,10 @@ static int fat_show_options(struct seq_file *m, struct dentry *root)
|
|
|
seq_puts(m, ",errors=panic");
|
|
|
else
|
|
|
seq_puts(m, ",errors=remount-ro");
|
|
|
+ if (opts->nfs == FAT_NFS_NOSTALE_RO)
|
|
|
+ seq_puts(m, ",nfs=nostale_ro");
|
|
|
+ else if (opts->nfs)
|
|
|
+ seq_puts(m, ",nfs=stale_rw");
|
|
|
if (opts->discard)
|
|
|
seq_puts(m, ",discard");
|
|
|
|
|
@@ -865,7 +867,7 @@ enum {
|
|
|
Opt_uni_xl_no, Opt_uni_xl_yes, Opt_nonumtail_no, Opt_nonumtail_yes,
|
|
|
Opt_obsolete, Opt_flush, Opt_tz_utc, Opt_rodir, Opt_err_cont,
|
|
|
Opt_err_panic, Opt_err_ro, Opt_discard, Opt_nfs, Opt_time_offset,
|
|
|
- Opt_err,
|
|
|
+ Opt_nfs_stale_rw, Opt_nfs_nostale_ro, Opt_err,
|
|
|
};
|
|
|
|
|
|
static const match_table_t fat_tokens = {
|
|
@@ -895,7 +897,9 @@ static const match_table_t fat_tokens = {
|
|
|
{Opt_err_panic, "errors=panic"},
|
|
|
{Opt_err_ro, "errors=remount-ro"},
|
|
|
{Opt_discard, "discard"},
|
|
|
- {Opt_nfs, "nfs"},
|
|
|
+ {Opt_nfs_stale_rw, "nfs"},
|
|
|
+ {Opt_nfs_stale_rw, "nfs=stale_rw"},
|
|
|
+ {Opt_nfs_nostale_ro, "nfs=nostale_ro"},
|
|
|
{Opt_obsolete, "conv=binary"},
|
|
|
{Opt_obsolete, "conv=text"},
|
|
|
{Opt_obsolete, "conv=auto"},
|
|
@@ -1092,6 +1096,12 @@ static int parse_options(struct super_block *sb, char *options, int is_vfat,
|
|
|
case Opt_err_ro:
|
|
|
opts->errors = FAT_ERRORS_RO;
|
|
|
break;
|
|
|
+ case Opt_nfs_stale_rw:
|
|
|
+ opts->nfs = FAT_NFS_STALE_RW;
|
|
|
+ break;
|
|
|
+ case Opt_nfs_nostale_ro:
|
|
|
+ opts->nfs = FAT_NFS_NOSTALE_RO;
|
|
|
+ break;
|
|
|
|
|
|
/* msdos specific */
|
|
|
case Opt_dots:
|
|
@@ -1150,9 +1160,6 @@ static int parse_options(struct super_block *sb, char *options, int is_vfat,
|
|
|
case Opt_discard:
|
|
|
opts->discard = 1;
|
|
|
break;
|
|
|
- case Opt_nfs:
|
|
|
- opts->nfs = 1;
|
|
|
- break;
|
|
|
|
|
|
/* obsolete mount options */
|
|
|
case Opt_obsolete:
|
|
@@ -1183,6 +1190,8 @@ out:
|
|
|
opts->allow_utime = ~opts->fs_dmask & (S_IWGRP | S_IWOTH);
|
|
|
if (opts->unicode_xlate)
|
|
|
opts->utf8 = 0;
|
|
|
+ if (opts->nfs == FAT_NFS_NOSTALE_RO)
|
|
|
+ sb->s_flags |= MS_RDONLY;
|
|
|
|
|
|
return 0;
|
|
|
}
|