Lines Matching refs:fc

360 static int nfs_validate_transport_protocol(struct fs_context *fc,  in nfs_validate_transport_protocol()  argument
386 return nfs_invalf(fc, "NFS: Unsupported transport protocol udp"); in nfs_validate_transport_protocol()
388 return nfs_invalf(fc, "NFS: Transport does not support xprtsec"); in nfs_validate_transport_protocol()
414 static int nfs_auth_info_add(struct fs_context *fc, in nfs_auth_info_add() argument
428 return nfs_invalf(fc, "NFS: too many sec= flavors"); in nfs_auth_info_add()
437 static int nfs_parse_security_flavors(struct fs_context *fc, in nfs_parse_security_flavors() argument
440 struct nfs_fs_context *ctx = nfs_fc2context(fc); in nfs_parse_security_flavors()
485 return nfs_invalf(fc, "NFS: sec=%s option not recognized", p); in nfs_parse_security_flavors()
488 ret = nfs_auth_info_add(fc, &ctx->auth_info, pseudoflavor); in nfs_parse_security_flavors()
496 static int nfs_parse_xprtsec_policy(struct fs_context *fc, in nfs_parse_xprtsec_policy() argument
499 struct nfs_fs_context *ctx = nfs_fc2context(fc); in nfs_parse_xprtsec_policy()
514 return nfs_invalf(fc, "NFS: Unrecognized transport security policy"); in nfs_parse_xprtsec_policy()
519 static int nfs_parse_version_string(struct fs_context *fc, in nfs_parse_version_string() argument
522 struct nfs_fs_context *ctx = nfs_fc2context(fc); in nfs_parse_version_string()
553 return nfs_invalf(fc, "NFS: Unsupported NFS version"); in nfs_parse_version_string()
587 static int nfs_fs_context_parse_param(struct fs_context *fc, in nfs_fs_context_parse_param() argument
591 struct nfs_fs_context *ctx = nfs_fc2context(fc); in nfs_fs_context_parse_param()
598 opt = fs_parse(fc, nfs_fs_parameters, param, &result); in nfs_fs_context_parse_param()
602 if (fc->security) in nfs_fs_context_parse_param()
607 if (fc->source) in nfs_fs_context_parse_param()
608 return nfs_invalf(fc, "NFS: Multiple sources not supported"); in nfs_fs_context_parse_param()
609 fc->source = param->string; in nfs_fs_context_parse_param()
818 ret = nfs_parse_version_string(fc, param->key + 1); in nfs_fs_context_parse_param()
826 ret = nfs_parse_version_string(fc, param->string); in nfs_fs_context_parse_param()
831 ret = nfs_parse_security_flavors(fc, param); in nfs_fs_context_parse_param()
836 ret = nfs_parse_xprtsec_policy(fc, param); in nfs_fs_context_parse_param()
918 len = rpc_pton(fc->net_ns, param->string, param->size, in nfs_fs_context_parse_param()
939 len = rpc_pton(fc->net_ns, param->string, param->size, in nfs_fs_context_parse_param()
962 if (fc->net_ns != &init_net) in nfs_fs_context_parse_param()
1046 return nfs_invalf(fc, "NFS: Bad mount option value specified"); in nfs_fs_context_parse_param()
1048 return nfs_invalf(fc, "NFS: Bad IP address specified"); in nfs_fs_context_parse_param()
1050 return nfs_invalf(fc, "NFS: Value for '%s' out of range", param->key); in nfs_fs_context_parse_param()
1052 return nfs_invalf(fc, "NFS: Unrecognized transport protocol"); in nfs_fs_context_parse_param()
1064 static int nfs_parse_source(struct fs_context *fc, in nfs_parse_source() argument
1067 struct nfs_fs_context *ctx = nfs_fc2context(fc); in nfs_parse_source()
1068 const char *dev_name = fc->source; in nfs_parse_source()
1117 return nfs_invalf(fc, "NFS: device name not in host:path format"); in nfs_parse_source()
1119 nfs_errorf(fc, "NFS: not enough memory to parse device name"); in nfs_parse_source()
1122 nfs_errorf(fc, "NFS: server hostname too long"); in nfs_parse_source()
1125 nfs_errorf(fc, "NFS: export pathname too long"); in nfs_parse_source()
1129 static inline bool is_remount_fc(struct fs_context *fc) in is_remount_fc() argument
1131 return fc->root != NULL; in is_remount_fc()
1150 static int nfs23_parse_monolithic(struct fs_context *fc, in nfs23_parse_monolithic() argument
1153 struct nfs_fs_context *ctx = nfs_fc2context(fc); in nfs23_parse_monolithic()
1227 if (!is_remount_fc(fc)) { in nfs23_parse_monolithic()
1272 ret = vfs_parse_fs_string(fc, "context", in nfs23_parse_monolithic()
1286 ret = nfs_validate_transport_protocol(fc, ctx); in nfs23_parse_monolithic()
1294 return generic_parse_monolithic(fc, data); in nfs23_parse_monolithic()
1297 if (is_remount_fc(fc)) { in nfs23_parse_monolithic()
1301 return nfs_invalf(fc, "NFS: mount program didn't pass any mount data"); in nfs23_parse_monolithic()
1304 return nfs_invalf(fc, "NFS: nfs_mount_data version does not support v3"); in nfs23_parse_monolithic()
1307 return nfs_invalf(fc, "NFS: nfs_mount_data version supports only AUTH_SYS"); in nfs23_parse_monolithic()
1313 return nfs_invalf(fc, "NFS: mount program didn't pass remote address"); in nfs23_parse_monolithic()
1316 return nfs_invalf(fc, "NFS: invalid root filehandle"); in nfs23_parse_monolithic()
1319 return nfs_invalf(fc, "NFS: invalid binary mount data"); in nfs23_parse_monolithic()
1385 static int nfs4_parse_monolithic(struct fs_context *fc, in nfs4_parse_monolithic() argument
1388 struct nfs_fs_context *ctx = nfs_fc2context(fc); in nfs4_parse_monolithic()
1394 if (is_remount_fc(fc)) in nfs4_parse_monolithic()
1396 return nfs_invalf(fc, in nfs4_parse_monolithic()
1403 return generic_parse_monolithic(fc, data); in nfs4_parse_monolithic()
1463 ret = nfs_validate_transport_protocol(fc, ctx); in nfs4_parse_monolithic()
1471 return nfs_invalf(fc, "NFS4: Invalid number of RPC auth flavours %d", in nfs4_parse_monolithic()
1475 return nfs_invalf(fc, "NFS4: mount program didn't pass remote address"); in nfs4_parse_monolithic()
1482 static int nfs_fs_context_parse_monolithic(struct fs_context *fc, in nfs_fs_context_parse_monolithic() argument
1485 if (fc->fs_type == &nfs_fs_type) in nfs_fs_context_parse_monolithic()
1486 return nfs23_parse_monolithic(fc, data); in nfs_fs_context_parse_monolithic()
1489 if (fc->fs_type == &nfs4_fs_type) in nfs_fs_context_parse_monolithic()
1490 return nfs4_parse_monolithic(fc, data); in nfs_fs_context_parse_monolithic()
1493 return nfs_invalf(fc, "NFS: Unsupported monolithic data version"); in nfs_fs_context_parse_monolithic()
1499 static int nfs_fs_context_validate(struct fs_context *fc) in nfs_fs_context_validate() argument
1501 struct nfs_fs_context *ctx = nfs_fc2context(fc); in nfs_fs_context_validate()
1509 if (!fc->source) in nfs_fs_context_validate()
1540 ret = nfs_validate_transport_protocol(fc, ctx); in nfs_fs_context_validate()
1566 ret = nfs_parse_source(fc, max_namelen, max_pathlen); in nfs_fs_context_validate()
1581 if (fc->fs_type != ctx->nfs_mod->nfs_fs) { in nfs_fs_context_validate()
1582 module_put(fc->fs_type->owner); in nfs_fs_context_validate()
1584 fc->fs_type = ctx->nfs_mod->nfs_fs; in nfs_fs_context_validate()
1589 return nfs_invalf(fc, "NFS: Device name not specified"); in nfs_fs_context_validate()
1591 nfs_errorf(fc, "NFS: NFSv4 is not compiled into kernel"); in nfs_fs_context_validate()
1594 return nfs_invalf(fc, "NFS: mount program didn't pass remote address"); in nfs_fs_context_validate()
1596 return nfs_invalf(fc, "NFS: Mount server address does not match mountproto= option"); in nfs_fs_context_validate()
1598 return nfs_invalf(fc, "NFS: Server address does not match proto= option"); in nfs_fs_context_validate()
1600 return nfs_invalf(fc, "NFS: Mount option vers=%u does not support minorversion=%u", in nfs_fs_context_validate()
1603 return nfs_invalf(fc, "NFS: 'Migration' not supported for this NFS version"); in nfs_fs_context_validate()
1605 nfs_errorf(fc, "NFS: Version unavailable"); in nfs_fs_context_validate()
1612 static int nfs_get_tree(struct fs_context *fc) in nfs_get_tree() argument
1614 struct nfs_fs_context *ctx = nfs_fc2context(fc); in nfs_get_tree()
1615 int err = nfs_fs_context_validate(fc); in nfs_get_tree()
1620 return ctx->nfs_mod->rpc_ops->try_get_tree(fc); in nfs_get_tree()
1622 return nfs_get_tree_common(fc); in nfs_get_tree()
1631 static int nfs_fs_context_dup(struct fs_context *fc, struct fs_context *src_fc) in nfs_fs_context_dup() argument
1653 fc->fs_private = ctx; in nfs_fs_context_dup()
1657 static void nfs_fs_context_free(struct fs_context *fc) in nfs_fs_context_free() argument
1659 struct nfs_fs_context *ctx = nfs_fc2context(fc); in nfs_fs_context_free()
1691 static int nfs_init_fs_context(struct fs_context *fc) in nfs_init_fs_context() argument
1709 if (fc->root) { in nfs_init_fs_context()
1711 struct nfs_server *nfss = fc->root->d_sb->s_fs_info; in nfs_init_fs_context()
1732 if (fc->net_ns != net) { in nfs_init_fs_context()
1733 put_net(fc->net_ns); in nfs_init_fs_context()
1734 fc->net_ns = get_net(net); in nfs_init_fs_context()
1756 if (fc->net_ns != &init_net) in nfs_init_fs_context()
1759 fc->s_iflags |= SB_I_STABLE_WRITES; in nfs_init_fs_context()
1761 fc->fs_private = ctx; in nfs_init_fs_context()
1762 fc->ops = &nfs_fs_context_ops; in nfs_init_fs_context()