aboutsummaryrefslogtreecommitdiffstats
path: root/fs/nfs/super.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/nfs/super.c')
-rw-r--r--fs/nfs/super.c25
1 files changed, 25 insertions, 0 deletions
diff --git a/fs/nfs/super.c b/fs/nfs/super.c
index b5fea776a0dc..82eaadbff408 100644
--- a/fs/nfs/super.c
+++ b/fs/nfs/super.c
@@ -77,6 +77,7 @@ enum {
77 Opt_rdirplus, Opt_nordirplus, 77 Opt_rdirplus, Opt_nordirplus,
78 Opt_sharecache, Opt_nosharecache, 78 Opt_sharecache, Opt_nosharecache,
79 Opt_resvport, Opt_noresvport, 79 Opt_resvport, Opt_noresvport,
80 Opt_fscache, Opt_nofscache,
80 81
81 /* Mount options that take integer arguments */ 82 /* Mount options that take integer arguments */
82 Opt_port, 83 Opt_port,
@@ -94,6 +95,7 @@ enum {
94 Opt_sec, Opt_proto, Opt_mountproto, Opt_mounthost, 95 Opt_sec, Opt_proto, Opt_mountproto, Opt_mounthost,
95 Opt_addr, Opt_mountaddr, Opt_clientaddr, 96 Opt_addr, Opt_mountaddr, Opt_clientaddr,
96 Opt_lookupcache, 97 Opt_lookupcache,
98 Opt_fscache_uniq,
97 99
98 /* Special mount options */ 100 /* Special mount options */
99 Opt_userspace, Opt_deprecated, Opt_sloppy, 101 Opt_userspace, Opt_deprecated, Opt_sloppy,
@@ -133,6 +135,9 @@ static const match_table_t nfs_mount_option_tokens = {
133 { Opt_nosharecache, "nosharecache" }, 135 { Opt_nosharecache, "nosharecache" },
134 { Opt_resvport, "resvport" }, 136 { Opt_resvport, "resvport" },
135 { Opt_noresvport, "noresvport" }, 137 { Opt_noresvport, "noresvport" },
138 { Opt_fscache, "fsc" },
139 { Opt_fscache_uniq, "fsc=%s" },
140 { Opt_nofscache, "nofsc" },
136 141
137 { Opt_port, "port=%u" }, 142 { Opt_port, "port=%u" },
138 { Opt_rsize, "rsize=%u" }, 143 { Opt_rsize, "rsize=%u" },
@@ -564,6 +569,8 @@ static void nfs_show_mount_options(struct seq_file *m, struct nfs_server *nfss,
564 if (clp->rpc_ops->version == 4) 569 if (clp->rpc_ops->version == 4)
565 seq_printf(m, ",clientaddr=%s", clp->cl_ipaddr); 570 seq_printf(m, ",clientaddr=%s", clp->cl_ipaddr);
566#endif 571#endif
572 if (nfss->options & NFS_OPTION_FSCACHE)
573 seq_printf(m, ",fsc");
567} 574}
568 575
569/* 576/*
@@ -1056,6 +1063,24 @@ static int nfs_parse_mount_options(char *raw,
1056 case Opt_noresvport: 1063 case Opt_noresvport:
1057 mnt->flags |= NFS_MOUNT_NORESVPORT; 1064 mnt->flags |= NFS_MOUNT_NORESVPORT;
1058 break; 1065 break;
1066 case Opt_fscache:
1067 mnt->options |= NFS_OPTION_FSCACHE;
1068 kfree(mnt->fscache_uniq);
1069 mnt->fscache_uniq = NULL;
1070 break;
1071 case Opt_nofscache:
1072 mnt->options &= ~NFS_OPTION_FSCACHE;
1073 kfree(mnt->fscache_uniq);
1074 mnt->fscache_uniq = NULL;
1075 break;
1076 case Opt_fscache_uniq:
1077 string = match_strdup(args);
1078 if (!string)
1079 goto out_nomem;
1080 kfree(mnt->fscache_uniq);
1081 mnt->fscache_uniq = string;
1082 mnt->options |= NFS_OPTION_FSCACHE;
1083 break;
1059 1084
1060 /* 1085 /*
1061 * options that take numeric values 1086 * options that take numeric values