Commit 6e4cffd7 authored by Chuck Lever's avatar Chuck Lever Committed by Trond Myklebust

NFS: Expand server address storage in nfs_client struct

Prepare for managing larger addresses in the NFS client by widening the
nfs_client struct's cl_addr field.
Signed-off-by: default avatarChuck Lever <chuck.lever@oracle.com>
Cc: Aurelien Charbon <aurelien.charbon@ext.bull.net>

(Modified to work with the new parameters for nfs_alloc_client)
Signed-off-by: default avatarTrond Myklebust <Trond.Myklebust@netapp.com>
parent 3b0d3f93
...@@ -98,6 +98,7 @@ struct rpc_program nfsacl_program = { ...@@ -98,6 +98,7 @@ struct rpc_program nfsacl_program = {
struct nfs_client_initdata { struct nfs_client_initdata {
const char *hostname; const char *hostname;
const struct sockaddr_in *addr; const struct sockaddr_in *addr;
size_t addrlen;
const struct nfs_rpc_ops *rpc_ops; const struct nfs_rpc_ops *rpc_ops;
}; };
...@@ -125,7 +126,8 @@ static struct nfs_client *nfs_alloc_client(const struct nfs_client_initdata *cl_ ...@@ -125,7 +126,8 @@ static struct nfs_client *nfs_alloc_client(const struct nfs_client_initdata *cl_
atomic_set(&clp->cl_count, 1); atomic_set(&clp->cl_count, 1);
clp->cl_cons_state = NFS_CS_INITING; clp->cl_cons_state = NFS_CS_INITING;
memcpy(&clp->cl_addr, cl_init->addr, sizeof(clp->cl_addr)); memcpy(&clp->cl_addr, cl_init->addr, cl_init->addrlen);
clp->cl_addrlen = cl_init->addrlen;
if (cl_init->hostname) { if (cl_init->hostname) {
clp->cl_hostname = kstrdup(cl_init->hostname, GFP_KERNEL); clp->cl_hostname = kstrdup(cl_init->hostname, GFP_KERNEL);
...@@ -425,7 +427,7 @@ static int nfs_create_rpc_client(struct nfs_client *clp, int proto, ...@@ -425,7 +427,7 @@ static int nfs_create_rpc_client(struct nfs_client *clp, int proto,
struct rpc_create_args args = { struct rpc_create_args args = {
.protocol = proto, .protocol = proto,
.address = (struct sockaddr *)&clp->cl_addr, .address = (struct sockaddr *)&clp->cl_addr,
.addrsize = sizeof(clp->cl_addr), .addrsize = clp->cl_addrlen,
.timeout = &timeparms, .timeout = &timeparms,
.servername = clp->cl_hostname, .servername = clp->cl_hostname,
.program = &nfs_program, .program = &nfs_program,
...@@ -585,6 +587,7 @@ static int nfs_init_server(struct nfs_server *server, ...@@ -585,6 +587,7 @@ static int nfs_init_server(struct nfs_server *server,
struct nfs_client_initdata cl_init = { struct nfs_client_initdata cl_init = {
.hostname = data->nfs_server.hostname, .hostname = data->nfs_server.hostname,
.addr = &data->nfs_server.address, .addr = &data->nfs_server.address,
.addrlen = sizeof(data->nfs_server.address),
.rpc_ops = &nfs_v2_clientops, .rpc_ops = &nfs_v2_clientops,
}; };
struct nfs_client *clp; struct nfs_client *clp;
...@@ -938,6 +941,7 @@ static int nfs4_set_client(struct nfs_server *server, ...@@ -938,6 +941,7 @@ static int nfs4_set_client(struct nfs_server *server,
struct nfs_client_initdata cl_init = { struct nfs_client_initdata cl_init = {
.hostname = hostname, .hostname = hostname,
.addr = addr, .addr = addr,
.addrlen = sizeof(*addr),
.rpc_ops = &nfs_v4_clientops, .rpc_ops = &nfs_v4_clientops,
}; };
struct nfs_client *clp; struct nfs_client *clp;
......
...@@ -21,7 +21,8 @@ struct nfs_client { ...@@ -21,7 +21,8 @@ struct nfs_client {
#define NFS_CS_CALLBACK 1 /* - callback started */ #define NFS_CS_CALLBACK 1 /* - callback started */
#define NFS_CS_IDMAP 2 /* - idmap started */ #define NFS_CS_IDMAP 2 /* - idmap started */
#define NFS_CS_RENEWD 3 /* - renewd started */ #define NFS_CS_RENEWD 3 /* - renewd started */
struct sockaddr_in cl_addr; /* server identifier */ struct sockaddr_storage cl_addr; /* server identifier */
size_t cl_addrlen;
char * cl_hostname; /* hostname of server */ char * cl_hostname; /* hostname of server */
struct list_head cl_share_link; /* link in global client list */ struct list_head cl_share_link; /* link in global client list */
struct list_head cl_superblocks; /* List of nfs_server structs */ struct list_head cl_superblocks; /* List of nfs_server structs */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment