NFS: don't cache the verifer across ->lookup() calls
[powerpc.git] / fs / nfs / client.c
index f51eabf..a532ee1 100644 (file)
@@ -23,6 +23,8 @@
 #include <linux/sunrpc/clnt.h>
 #include <linux/sunrpc/stats.h>
 #include <linux/sunrpc/metrics.h>
+#include <linux/sunrpc/xprtsock.h>
+#include <linux/sunrpc/xprtrdma.h>
 #include <linux/nfs_fs.h>
 #include <linux/nfs_mount.h>
 #include <linux/nfs4_mount.h>
@@ -340,7 +342,8 @@ static void nfs_init_timeout_values(struct rpc_timeout *to, int proto,
                to->to_retries = 2;
 
        switch (proto) {
-       case IPPROTO_TCP:
+       case XPRT_TRANSPORT_TCP:
+       case XPRT_TRANSPORT_RDMA:
                if (!to->to_initval)
                        to->to_initval = 60 * HZ;
                if (to->to_initval > NFS_MAX_TCP_TIMEOUT)
@@ -349,7 +352,7 @@ static void nfs_init_timeout_values(struct rpc_timeout *to, int proto,
                to->to_maxval = to->to_initval + (to->to_increment * to->to_retries);
                to->to_exponential = 0;
                break;
-       case IPPROTO_UDP:
+       case XPRT_TRANSPORT_UDP:
        default:
                if (!to->to_initval)
                        to->to_initval = 11 * HZ / 10;
@@ -908,7 +911,7 @@ error:
  * Create a version 4 volume record
  */
 static int nfs4_init_server(struct nfs_server *server,
-               const struct nfs4_mount_data *data, rpc_authflavor_t authflavour)
+               const struct nfs_parsed_mount_data *data)
 {
        int error;
 
@@ -928,7 +931,7 @@ static int nfs4_init_server(struct nfs_server *server,
        server->acdirmin = data->acdirmin * HZ;
        server->acdirmax = data->acdirmax * HZ;
 
-       error = nfs_init_server_rpcclient(server, authflavour);
+       error = nfs_init_server_rpcclient(server, data->auth_flavors[0]);
 
        /* Done */
        dprintk("<-- nfs4_init_server() = %d\n", error);
@@ -939,12 +942,7 @@ static int nfs4_init_server(struct nfs_server *server,
  * Create a version 4 volume record
  * - keyed on server and FSID
  */
-struct nfs_server *nfs4_create_server(const struct nfs4_mount_data *data,
-                                     const char *hostname,
-                                     const struct sockaddr_in *addr,
-                                     const char *mntpath,
-                                     const char *ip_addr,
-                                     rpc_authflavor_t authflavour,
+struct nfs_server *nfs4_create_server(const struct nfs_parsed_mount_data *data,
                                      struct nfs_fh *mntfh)
 {
        struct nfs_fattr fattr;
@@ -958,13 +956,18 @@ struct nfs_server *nfs4_create_server(const struct nfs4_mount_data *data,
                return ERR_PTR(-ENOMEM);
 
        /* Get a client record */
-       error = nfs4_set_client(server, hostname, addr, ip_addr, authflavour,
-                       data->proto, data->timeo, data->retrans);
+       error = nfs4_set_client(server,
+                       data->nfs_server.hostname,
+                       &data->nfs_server.address,
+                       data->client_address,
+                       data->auth_flavors[0],
+                       data->nfs_server.protocol,
+                       data->timeo, data->retrans);
        if (error < 0)
                goto error;
 
        /* set up the general RPC client */
-       error = nfs4_init_server(server, data, authflavour);
+       error = nfs4_init_server(server, data);
        if (error < 0)
                goto error;
 
@@ -973,7 +976,7 @@ struct nfs_server *nfs4_create_server(const struct nfs4_mount_data *data,
        BUG_ON(!server->nfs_client->rpc_ops->file_inode_ops);
 
        /* Probe the root fh to retrieve its FSID */
-       error = nfs4_path_walk(server, mntfh, mntpath);
+       error = nfs4_path_walk(server, mntfh, data->nfs_server.export_path);
        if (error < 0)
                goto error;