NFS: Deindent nfs_fs_context_parse_option()

Deindent nfs_fs_context_parse_option().

Signed-off-by: David Howells <dhowells@redhat.com>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
This commit is contained in:
David Howells 2019-12-10 07:31:08 -05:00 committed by Anna Schumaker
parent f8ee01e3e2
commit cbd071b5da
1 changed files with 366 additions and 371 deletions

View File

@ -500,410 +500,405 @@ static int nfs_get_option_ul_bound(substring_t args[], unsigned long *option,
*/ */
static int nfs_fs_context_parse_option(struct nfs_fs_context *ctx, char *p) static int nfs_fs_context_parse_option(struct nfs_fs_context *ctx, char *p)
{ {
substring_t args[MAX_OPT_ARGS];
unsigned long option;
char *string; char *string;
int rc; int token, rc;
{ dfprintk(MOUNT, "NFS: parsing nfs mount option '%s'\n", p);
substring_t args[MAX_OPT_ARGS];
unsigned long option;
int token;
dfprintk(MOUNT, "NFS: parsing nfs mount option '%s'\n", p);
token = match_token(p, nfs_mount_option_tokens, args);
switch (token) {
token = match_token(p, nfs_mount_option_tokens, args);
switch (token) {
/* /*
* boolean options: foo/nofoo * boolean options: foo/nofoo
*/ */
case Opt_soft: case Opt_soft:
ctx->flags |= NFS_MOUNT_SOFT; ctx->flags |= NFS_MOUNT_SOFT;
ctx->flags &= ~NFS_MOUNT_SOFTERR; ctx->flags &= ~NFS_MOUNT_SOFTERR;
break; break;
case Opt_softerr: case Opt_softerr:
ctx->flags |= NFS_MOUNT_SOFTERR; ctx->flags |= NFS_MOUNT_SOFTERR;
ctx->flags &= ~NFS_MOUNT_SOFT; ctx->flags &= ~NFS_MOUNT_SOFT;
break; break;
case Opt_hard: case Opt_hard:
ctx->flags &= ~(NFS_MOUNT_SOFT|NFS_MOUNT_SOFTERR); ctx->flags &= ~(NFS_MOUNT_SOFT|NFS_MOUNT_SOFTERR);
break; break;
case Opt_posix: case Opt_posix:
ctx->flags |= NFS_MOUNT_POSIX; ctx->flags |= NFS_MOUNT_POSIX;
break; break;
case Opt_noposix: case Opt_noposix:
ctx->flags &= ~NFS_MOUNT_POSIX; ctx->flags &= ~NFS_MOUNT_POSIX;
break; break;
case Opt_cto: case Opt_cto:
ctx->flags &= ~NFS_MOUNT_NOCTO; ctx->flags &= ~NFS_MOUNT_NOCTO;
break; break;
case Opt_nocto: case Opt_nocto:
ctx->flags |= NFS_MOUNT_NOCTO; ctx->flags |= NFS_MOUNT_NOCTO;
break; break;
case Opt_ac: case Opt_ac:
ctx->flags &= ~NFS_MOUNT_NOAC; ctx->flags &= ~NFS_MOUNT_NOAC;
break; break;
case Opt_noac: case Opt_noac:
ctx->flags |= NFS_MOUNT_NOAC; ctx->flags |= NFS_MOUNT_NOAC;
break; break;
case Opt_lock: case Opt_lock:
ctx->flags &= ~NFS_MOUNT_NONLM; ctx->flags &= ~NFS_MOUNT_NONLM;
ctx->flags &= ~(NFS_MOUNT_LOCAL_FLOCK | ctx->flags &= ~(NFS_MOUNT_LOCAL_FLOCK |
NFS_MOUNT_LOCAL_FCNTL); NFS_MOUNT_LOCAL_FCNTL);
break; break;
case Opt_nolock: case Opt_nolock:
ctx->flags |= NFS_MOUNT_NONLM; ctx->flags |= NFS_MOUNT_NONLM;
ctx->flags |= (NFS_MOUNT_LOCAL_FLOCK | ctx->flags |= (NFS_MOUNT_LOCAL_FLOCK |
NFS_MOUNT_LOCAL_FCNTL); NFS_MOUNT_LOCAL_FCNTL);
break; break;
case Opt_udp: case Opt_udp:
ctx->flags &= ~NFS_MOUNT_TCP; ctx->flags &= ~NFS_MOUNT_TCP;
ctx->nfs_server.protocol = XPRT_TRANSPORT_UDP; ctx->nfs_server.protocol = XPRT_TRANSPORT_UDP;
break; break;
case Opt_tcp: case Opt_tcp:
ctx->flags |= NFS_MOUNT_TCP; ctx->flags |= NFS_MOUNT_TCP;
ctx->nfs_server.protocol = XPRT_TRANSPORT_TCP; ctx->nfs_server.protocol = XPRT_TRANSPORT_TCP;
break; break;
case Opt_rdma: case Opt_rdma:
ctx->flags |= NFS_MOUNT_TCP; /* for side protocols */ ctx->flags |= NFS_MOUNT_TCP; /* for side protocols */
ctx->nfs_server.protocol = XPRT_TRANSPORT_RDMA; ctx->nfs_server.protocol = XPRT_TRANSPORT_RDMA;
xprt_load_transport(p); xprt_load_transport(p);
break; break;
case Opt_acl: case Opt_acl:
ctx->flags &= ~NFS_MOUNT_NOACL; ctx->flags &= ~NFS_MOUNT_NOACL;
break; break;
case Opt_noacl: case Opt_noacl:
ctx->flags |= NFS_MOUNT_NOACL; ctx->flags |= NFS_MOUNT_NOACL;
break; break;
case Opt_rdirplus: case Opt_rdirplus:
ctx->flags &= ~NFS_MOUNT_NORDIRPLUS; ctx->flags &= ~NFS_MOUNT_NORDIRPLUS;
break; break;
case Opt_nordirplus: case Opt_nordirplus:
ctx->flags |= NFS_MOUNT_NORDIRPLUS; ctx->flags |= NFS_MOUNT_NORDIRPLUS;
break; break;
case Opt_sharecache: case Opt_sharecache:
ctx->flags &= ~NFS_MOUNT_UNSHARED; ctx->flags &= ~NFS_MOUNT_UNSHARED;
break; break;
case Opt_nosharecache: case Opt_nosharecache:
ctx->flags |= NFS_MOUNT_UNSHARED; ctx->flags |= NFS_MOUNT_UNSHARED;
break; break;
case Opt_resvport: case Opt_resvport:
ctx->flags &= ~NFS_MOUNT_NORESVPORT; ctx->flags &= ~NFS_MOUNT_NORESVPORT;
break; break;
case Opt_noresvport: case Opt_noresvport:
ctx->flags |= NFS_MOUNT_NORESVPORT; ctx->flags |= NFS_MOUNT_NORESVPORT;
break; break;
case Opt_fscache: case Opt_fscache:
ctx->options |= NFS_OPTION_FSCACHE; ctx->options |= NFS_OPTION_FSCACHE;
kfree(ctx->fscache_uniq); kfree(ctx->fscache_uniq);
ctx->fscache_uniq = NULL; ctx->fscache_uniq = NULL;
break; break;
case Opt_nofscache: case Opt_nofscache:
ctx->options &= ~NFS_OPTION_FSCACHE; ctx->options &= ~NFS_OPTION_FSCACHE;
kfree(ctx->fscache_uniq); kfree(ctx->fscache_uniq);
ctx->fscache_uniq = NULL; ctx->fscache_uniq = NULL;
break; break;
case Opt_migration: case Opt_migration:
ctx->options |= NFS_OPTION_MIGRATION; ctx->options |= NFS_OPTION_MIGRATION;
break; break;
case Opt_nomigration: case Opt_nomigration:
ctx->options &= ~NFS_OPTION_MIGRATION; ctx->options &= ~NFS_OPTION_MIGRATION;
break; break;
/* /*
* options that take numeric values * options that take numeric values
*/ */
case Opt_port: case Opt_port:
if (nfs_get_option_ul(args, &option) || if (nfs_get_option_ul(args, &option) ||
option > USHRT_MAX) option > USHRT_MAX)
goto out_invalid_value; goto out_invalid_value;
ctx->nfs_server.port = option; ctx->nfs_server.port = option;
break; break;
case Opt_rsize: case Opt_rsize:
if (nfs_get_option_ul(args, &option)) if (nfs_get_option_ul(args, &option))
goto out_invalid_value; goto out_invalid_value;
ctx->rsize = option; ctx->rsize = option;
break; break;
case Opt_wsize: case Opt_wsize:
if (nfs_get_option_ul(args, &option)) if (nfs_get_option_ul(args, &option))
goto out_invalid_value; goto out_invalid_value;
ctx->wsize = option; ctx->wsize = option;
break; break;
case Opt_bsize: case Opt_bsize:
if (nfs_get_option_ul(args, &option)) if (nfs_get_option_ul(args, &option))
goto out_invalid_value; goto out_invalid_value;
ctx->bsize = option; ctx->bsize = option;
break; break;
case Opt_timeo: case Opt_timeo:
if (nfs_get_option_ul_bound(args, &option, 1, INT_MAX)) if (nfs_get_option_ul_bound(args, &option, 1, INT_MAX))
goto out_invalid_value; goto out_invalid_value;
ctx->timeo = option; ctx->timeo = option;
break; break;
case Opt_retrans: case Opt_retrans:
if (nfs_get_option_ul_bound(args, &option, 0, INT_MAX)) if (nfs_get_option_ul_bound(args, &option, 0, INT_MAX))
goto out_invalid_value; goto out_invalid_value;
ctx->retrans = option; ctx->retrans = option;
break; break;
case Opt_acregmin: case Opt_acregmin:
if (nfs_get_option_ul(args, &option)) if (nfs_get_option_ul(args, &option))
goto out_invalid_value; goto out_invalid_value;
ctx->acregmin = option; ctx->acregmin = option;
break; break;
case Opt_acregmax: case Opt_acregmax:
if (nfs_get_option_ul(args, &option)) if (nfs_get_option_ul(args, &option))
goto out_invalid_value; goto out_invalid_value;
ctx->acregmax = option; ctx->acregmax = option;
break; break;
case Opt_acdirmin: case Opt_acdirmin:
if (nfs_get_option_ul(args, &option)) if (nfs_get_option_ul(args, &option))
goto out_invalid_value; goto out_invalid_value;
ctx->acdirmin = option; ctx->acdirmin = option;
break; break;
case Opt_acdirmax: case Opt_acdirmax:
if (nfs_get_option_ul(args, &option)) if (nfs_get_option_ul(args, &option))
goto out_invalid_value; goto out_invalid_value;
ctx->acdirmax = option; ctx->acdirmax = option;
break; break;
case Opt_actimeo: case Opt_actimeo:
if (nfs_get_option_ul(args, &option)) if (nfs_get_option_ul(args, &option))
goto out_invalid_value; goto out_invalid_value;
ctx->acregmin = ctx->acregmax = ctx->acregmin = ctx->acregmax =
ctx->acdirmin = ctx->acdirmax = option; ctx->acdirmin = ctx->acdirmax = option;
break; break;
case Opt_namelen: case Opt_namelen:
if (nfs_get_option_ul(args, &option)) if (nfs_get_option_ul(args, &option))
goto out_invalid_value; goto out_invalid_value;
ctx->namlen = option; ctx->namlen = option;
break; break;
case Opt_mountport: case Opt_mountport:
if (nfs_get_option_ul(args, &option) || if (nfs_get_option_ul(args, &option) ||
option > USHRT_MAX) option > USHRT_MAX)
goto out_invalid_value; goto out_invalid_value;
ctx->mount_server.port = option; ctx->mount_server.port = option;
break; break;
case Opt_mountvers: case Opt_mountvers:
if (nfs_get_option_ul(args, &option) || if (nfs_get_option_ul(args, &option) ||
option < NFS_MNT_VERSION || option < NFS_MNT_VERSION ||
option > NFS_MNT3_VERSION) option > NFS_MNT3_VERSION)
goto out_invalid_value; goto out_invalid_value;
ctx->mount_server.version = option; ctx->mount_server.version = option;
break; break;
case Opt_minorversion: case Opt_minorversion:
if (nfs_get_option_ul(args, &option)) if (nfs_get_option_ul(args, &option))
goto out_invalid_value; goto out_invalid_value;
if (option > NFS4_MAX_MINOR_VERSION) if (option > NFS4_MAX_MINOR_VERSION)
goto out_invalid_value; goto out_invalid_value;
ctx->minorversion = option; ctx->minorversion = option;
break; break;
/* /*
* options that take text values * options that take text values
*/ */
case Opt_nfsvers: case Opt_nfsvers:
string = match_strdup(args); string = match_strdup(args);
if (string == NULL) if (string == NULL)
goto out_nomem; goto out_nomem;
rc = nfs_parse_version_string(string, ctx, args); rc = nfs_parse_version_string(string, ctx, args);
kfree(string); kfree(string);
if (!rc) if (!rc)
goto out_invalid_value; goto out_invalid_value;
break; break;
case Opt_sec: case Opt_sec:
string = match_strdup(args); string = match_strdup(args);
if (string == NULL) if (string == NULL)
goto out_nomem; goto out_nomem;
rc = nfs_parse_security_flavors(string, ctx); rc = nfs_parse_security_flavors(string, ctx);
kfree(string); kfree(string);
if (!rc) { if (!rc) {
dfprintk(MOUNT, "NFS: unrecognized " dfprintk(MOUNT, "NFS: unrecognized "
"security flavor\n"); "security flavor\n");
return -EINVAL; return -EINVAL;
} }
break; break;
case Opt_proto: case Opt_proto:
string = match_strdup(args); string = match_strdup(args);
if (string == NULL) if (string == NULL)
goto out_nomem; goto out_nomem;
token = match_token(string, token = match_token(string,
nfs_xprt_protocol_tokens, args); nfs_xprt_protocol_tokens, args);
ctx->protofamily = AF_INET; ctx->protofamily = AF_INET;
switch (token) { switch (token) {
case Opt_xprt_udp6: case Opt_xprt_udp6:
ctx->protofamily = AF_INET6; ctx->protofamily = AF_INET6;
/* fall through */ /* fall through */
case Opt_xprt_udp: case Opt_xprt_udp:
ctx->flags &= ~NFS_MOUNT_TCP; ctx->flags &= ~NFS_MOUNT_TCP;
ctx->nfs_server.protocol = XPRT_TRANSPORT_UDP; ctx->nfs_server.protocol = XPRT_TRANSPORT_UDP;
break;
case Opt_xprt_tcp6:
ctx->protofamily = AF_INET6;
/* fall through */
case Opt_xprt_tcp:
ctx->flags |= NFS_MOUNT_TCP;
ctx->nfs_server.protocol = XPRT_TRANSPORT_TCP;
break;
case Opt_xprt_rdma6:
ctx->protofamily = AF_INET6;
/* fall through */
case Opt_xprt_rdma:
/* vector side protocols to TCP */
ctx->flags |= NFS_MOUNT_TCP;
ctx->nfs_server.protocol = XPRT_TRANSPORT_RDMA;
xprt_load_transport(string);
break;
default:
dfprintk(MOUNT, "NFS: unrecognized "
"transport protocol\n");
kfree(string);
return -EINVAL;
}
kfree(string);
break; break;
case Opt_mountproto: case Opt_xprt_tcp6:
string = match_strdup(args); ctx->protofamily = AF_INET6;
if (string == NULL) /* fall through */
goto out_nomem; case Opt_xprt_tcp:
token = match_token(string, ctx->flags |= NFS_MOUNT_TCP;
nfs_xprt_protocol_tokens, args); ctx->nfs_server.protocol = XPRT_TRANSPORT_TCP;
break;
case Opt_xprt_rdma6:
ctx->protofamily = AF_INET6;
/* fall through */
case Opt_xprt_rdma:
/* vector side protocols to TCP */
ctx->flags |= NFS_MOUNT_TCP;
ctx->nfs_server.protocol = XPRT_TRANSPORT_RDMA;
xprt_load_transport(string);
break;
default:
dfprintk(MOUNT, "NFS: unrecognized "
"transport protocol\n");
kfree(string); kfree(string);
return -EINVAL;
}
kfree(string);
break;
case Opt_mountproto:
string = match_strdup(args);
if (string == NULL)
goto out_nomem;
token = match_token(string,
nfs_xprt_protocol_tokens, args);
kfree(string);
ctx->mountfamily = AF_INET; ctx->mountfamily = AF_INET;
switch (token) { switch (token) {
case Opt_xprt_udp6: case Opt_xprt_udp6:
ctx->mountfamily = AF_INET6; ctx->mountfamily = AF_INET6;
/* fall through */ /* fall through */
case Opt_xprt_udp: case Opt_xprt_udp:
ctx->mount_server.protocol = XPRT_TRANSPORT_UDP; ctx->mount_server.protocol = XPRT_TRANSPORT_UDP;
break;
case Opt_xprt_tcp6:
ctx->mountfamily = AF_INET6;
/* fall through */
case Opt_xprt_tcp:
ctx->mount_server.protocol = XPRT_TRANSPORT_TCP;
break;
case Opt_xprt_rdma: /* not used for side protocols */
default:
dfprintk(MOUNT, "NFS: unrecognized "
"transport protocol\n");
return -EINVAL;
}
break; break;
case Opt_addr: case Opt_xprt_tcp6:
string = match_strdup(args); ctx->mountfamily = AF_INET6;
if (string == NULL) /* fall through */
goto out_nomem; case Opt_xprt_tcp:
ctx->nfs_server.addrlen = ctx->mount_server.protocol = XPRT_TRANSPORT_TCP;
rpc_pton(ctx->net, string, strlen(string),
(struct sockaddr *)
&ctx->nfs_server.address,
sizeof(ctx->nfs_server.address));
kfree(string);
if (ctx->nfs_server.addrlen == 0)
goto out_invalid_address;
break; break;
case Opt_clientaddr: case Opt_xprt_rdma: /* not used for side protocols */
if (nfs_get_option_str(args, &ctx->client_address)) default:
goto out_nomem; dfprintk(MOUNT, "NFS: unrecognized "
"transport protocol\n");
return -EINVAL;
}
break;
case Opt_addr:
string = match_strdup(args);
if (string == NULL)
goto out_nomem;
ctx->nfs_server.addrlen =
rpc_pton(ctx->net, string, strlen(string),
(struct sockaddr *)
&ctx->nfs_server.address,
sizeof(ctx->nfs_server.address));
kfree(string);
if (ctx->nfs_server.addrlen == 0)
goto out_invalid_address;
break;
case Opt_clientaddr:
if (nfs_get_option_str(args, &ctx->client_address))
goto out_nomem;
break;
case Opt_mounthost:
if (nfs_get_option_str(args,
&ctx->mount_server.hostname))
goto out_nomem;
break;
case Opt_mountaddr:
string = match_strdup(args);
if (string == NULL)
goto out_nomem;
ctx->mount_server.addrlen =
rpc_pton(ctx->net, string, strlen(string),
(struct sockaddr *)
&ctx->mount_server.address,
sizeof(ctx->mount_server.address));
kfree(string);
if (ctx->mount_server.addrlen == 0)
goto out_invalid_address;
break;
case Opt_nconnect:
if (nfs_get_option_ul_bound(args, &option, 1, NFS_MAX_CONNECTIONS))
goto out_invalid_value;
ctx->nfs_server.nconnect = option;
break;
case Opt_lookupcache:
string = match_strdup(args);
if (string == NULL)
goto out_nomem;
token = match_token(string,
nfs_lookupcache_tokens, args);
kfree(string);
switch (token) {
case Opt_lookupcache_all:
ctx->flags &= ~(NFS_MOUNT_LOOKUP_CACHE_NONEG|NFS_MOUNT_LOOKUP_CACHE_NONE);
break; break;
case Opt_mounthost: case Opt_lookupcache_positive:
if (nfs_get_option_str(args, ctx->flags &= ~NFS_MOUNT_LOOKUP_CACHE_NONE;
&ctx->mount_server.hostname)) ctx->flags |= NFS_MOUNT_LOOKUP_CACHE_NONEG;
goto out_nomem;
break; break;
case Opt_mountaddr: case Opt_lookupcache_none:
string = match_strdup(args); ctx->flags |= NFS_MOUNT_LOOKUP_CACHE_NONEG|NFS_MOUNT_LOOKUP_CACHE_NONE;
if (string == NULL)
goto out_nomem;
ctx->mount_server.addrlen =
rpc_pton(ctx->net, string, strlen(string),
(struct sockaddr *)
&ctx->mount_server.address,
sizeof(ctx->mount_server.address));
kfree(string);
if (ctx->mount_server.addrlen == 0)
goto out_invalid_address;
break; break;
case Opt_nconnect: default:
if (nfs_get_option_ul_bound(args, &option, 1, NFS_MAX_CONNECTIONS)) dfprintk(MOUNT, "NFS: invalid "
goto out_invalid_value; "lookupcache argument\n");
ctx->nfs_server.nconnect = option; return -EINVAL;
}
break;
case Opt_fscache_uniq:
if (nfs_get_option_str(args, &ctx->fscache_uniq))
goto out_nomem;
ctx->options |= NFS_OPTION_FSCACHE;
break;
case Opt_local_lock:
string = match_strdup(args);
if (string == NULL)
goto out_nomem;
token = match_token(string, nfs_local_lock_tokens,
args);
kfree(string);
switch (token) {
case Opt_local_lock_all:
ctx->flags |= (NFS_MOUNT_LOCAL_FLOCK |
NFS_MOUNT_LOCAL_FCNTL);
break; break;
case Opt_lookupcache: case Opt_local_lock_flock:
string = match_strdup(args); ctx->flags |= NFS_MOUNT_LOCAL_FLOCK;
if (string == NULL)
goto out_nomem;
token = match_token(string,
nfs_lookupcache_tokens, args);
kfree(string);
switch (token) {
case Opt_lookupcache_all:
ctx->flags &= ~(NFS_MOUNT_LOOKUP_CACHE_NONEG|NFS_MOUNT_LOOKUP_CACHE_NONE);
break;
case Opt_lookupcache_positive:
ctx->flags &= ~NFS_MOUNT_LOOKUP_CACHE_NONE;
ctx->flags |= NFS_MOUNT_LOOKUP_CACHE_NONEG;
break;
case Opt_lookupcache_none:
ctx->flags |= NFS_MOUNT_LOOKUP_CACHE_NONEG|NFS_MOUNT_LOOKUP_CACHE_NONE;
break;
default:
dfprintk(MOUNT, "NFS: invalid "
"lookupcache argument\n");
return -EINVAL;
}
break; break;
case Opt_fscache_uniq: case Opt_local_lock_posix:
if (nfs_get_option_str(args, &ctx->fscache_uniq)) ctx->flags |= NFS_MOUNT_LOCAL_FCNTL;
goto out_nomem;
ctx->options |= NFS_OPTION_FSCACHE;
break; break;
case Opt_local_lock: case Opt_local_lock_none:
string = match_strdup(args); ctx->flags &= ~(NFS_MOUNT_LOCAL_FLOCK |
if (string == NULL) NFS_MOUNT_LOCAL_FCNTL);
goto out_nomem;
token = match_token(string, nfs_local_lock_tokens,
args);
kfree(string);
switch (token) {
case Opt_local_lock_all:
ctx->flags |= (NFS_MOUNT_LOCAL_FLOCK |
NFS_MOUNT_LOCAL_FCNTL);
break;
case Opt_local_lock_flock:
ctx->flags |= NFS_MOUNT_LOCAL_FLOCK;
break;
case Opt_local_lock_posix:
ctx->flags |= NFS_MOUNT_LOCAL_FCNTL;
break;
case Opt_local_lock_none:
ctx->flags &= ~(NFS_MOUNT_LOCAL_FLOCK |
NFS_MOUNT_LOCAL_FCNTL);
break;
default:
dfprintk(MOUNT, "NFS: invalid "
"local_lock argument\n");
return -EINVAL;
}
break; break;
default:
dfprintk(MOUNT, "NFS: invalid "
"local_lock argument\n");
return -EINVAL;
}
break;
/* /*
* Special options * Special options
*/ */
case Opt_sloppy: case Opt_sloppy:
ctx->sloppy = 1; ctx->sloppy = 1;
dfprintk(MOUNT, "NFS: relaxing parsing rules\n"); dfprintk(MOUNT, "NFS: relaxing parsing rules\n");
break; break;
case Opt_userspace: case Opt_userspace:
case Opt_deprecated: case Opt_deprecated:
dfprintk(MOUNT, "NFS: ignoring mount option " dfprintk(MOUNT, "NFS: ignoring mount option "
"'%s'\n", p); "'%s'\n", p);
break; break;
default: default:
dfprintk(MOUNT, "NFS: unrecognized mount option " dfprintk(MOUNT, "NFS: unrecognized mount option "
"'%s'\n", p); "'%s'\n", p);
return -EINVAL; return -EINVAL;
}
} }
return 0; return 0;