Merge tag 'pci-v4.8-changes' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci
[cascardo/linux.git] / fs / nfs / nfs3client.c
index 9e9fa34..ee75354 100644 (file)
@@ -76,19 +76,23 @@ struct nfs_server *nfs3_clone_server(struct nfs_server *source,
  * low timeout interval so that if a connection is lost, we retry through
  * the MDS.
  */
-struct nfs_client *nfs3_set_ds_client(struct nfs_client *mds_clp,
+struct nfs_client *nfs3_set_ds_client(struct nfs_server *mds_srv,
                const struct sockaddr *ds_addr, int ds_addrlen,
                int ds_proto, unsigned int ds_timeo, unsigned int ds_retrans,
                rpc_authflavor_t au_flavor)
 {
+       struct rpc_timeout ds_timeout;
+       struct nfs_client *mds_clp = mds_srv->nfs_client;
        struct nfs_client_initdata cl_init = {
                .addr = ds_addr,
                .addrlen = ds_addrlen,
+               .nodename = mds_clp->cl_rpcclient->cl_nodename,
+               .ip_addr = mds_clp->cl_ipaddr,
                .nfs_mod = &nfs_v3,
                .proto = ds_proto,
                .net = mds_clp->cl_net,
+               .timeparms = &ds_timeout,
        };
-       struct rpc_timeout ds_timeout;
        struct nfs_client *clp;
        char buf[INET6_ADDRSTRLEN + 1];
 
@@ -97,10 +101,12 @@ struct nfs_client *nfs3_set_ds_client(struct nfs_client *mds_clp,
                return ERR_PTR(-EINVAL);
        cl_init.hostname = buf;
 
+       if (mds_srv->flags & NFS_MOUNT_NORESVPORT)
+               set_bit(NFS_CS_NORESVPORT, &cl_init.init_flags);
+
        /* Use the MDS nfs_client cl_ipaddr. */
        nfs_init_timeout_values(&ds_timeout, ds_proto, ds_timeo, ds_retrans);
-       clp = nfs_get_client(&cl_init, &ds_timeout, mds_clp->cl_ipaddr,
-                            au_flavor);
+       clp = nfs_get_client(&cl_init, au_flavor);
 
        return clp;
 }