diff options
author | Chuck Lever <chuck.lever@oracle.com> | 2007-12-10 14:58:15 -0500 |
---|---|---|
committer | Trond Myklebust <Trond.Myklebust@netapp.com> | 2008-01-30 02:05:54 -0500 |
commit | 6e4cffd7b2cf86022dcf9cceeb63f16ff852caa1 (patch) | |
tree | 9f92711937e876f2e2e143c612fcbfb7c1b7d03a | |
parent | 3b0d3f93d01bb013c3dcf9555d2d111c91ac6a1e (diff) |
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: Chuck 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: Trond Myklebust <Trond.Myklebust@netapp.com>
-rw-r--r-- | fs/nfs/client.c | 8 | ||||
-rw-r--r-- | include/linux/nfs_fs_sb.h | 3 |
2 files changed, 8 insertions, 3 deletions
diff --git a/fs/nfs/client.c b/fs/nfs/client.c index 876162cddf1e..44fe7fd7bfbf 100644 --- a/fs/nfs/client.c +++ b/fs/nfs/client.c | |||
@@ -98,6 +98,7 @@ struct rpc_program nfsacl_program = { | |||
98 | struct nfs_client_initdata { | 98 | struct nfs_client_initdata { |
99 | const char *hostname; | 99 | const char *hostname; |
100 | const struct sockaddr_in *addr; | 100 | const struct sockaddr_in *addr; |
101 | size_t addrlen; | ||
101 | const struct nfs_rpc_ops *rpc_ops; | 102 | const struct nfs_rpc_ops *rpc_ops; |
102 | }; | 103 | }; |
103 | 104 | ||
@@ -125,7 +126,8 @@ static struct nfs_client *nfs_alloc_client(const struct nfs_client_initdata *cl_ | |||
125 | atomic_set(&clp->cl_count, 1); | 126 | atomic_set(&clp->cl_count, 1); |
126 | clp->cl_cons_state = NFS_CS_INITING; | 127 | clp->cl_cons_state = NFS_CS_INITING; |
127 | 128 | ||
128 | memcpy(&clp->cl_addr, cl_init->addr, sizeof(clp->cl_addr)); | 129 | memcpy(&clp->cl_addr, cl_init->addr, cl_init->addrlen); |
130 | clp->cl_addrlen = cl_init->addrlen; | ||
129 | 131 | ||
130 | if (cl_init->hostname) { | 132 | if (cl_init->hostname) { |
131 | clp->cl_hostname = kstrdup(cl_init->hostname, GFP_KERNEL); | 133 | 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 | struct rpc_create_args args = { | 427 | struct rpc_create_args args = { |
426 | .protocol = proto, | 428 | .protocol = proto, |
427 | .address = (struct sockaddr *)&clp->cl_addr, | 429 | .address = (struct sockaddr *)&clp->cl_addr, |
428 | .addrsize = sizeof(clp->cl_addr), | 430 | .addrsize = clp->cl_addrlen, |
429 | .timeout = &timeparms, | 431 | .timeout = &timeparms, |
430 | .servername = clp->cl_hostname, | 432 | .servername = clp->cl_hostname, |
431 | .program = &nfs_program, | 433 | .program = &nfs_program, |
@@ -585,6 +587,7 @@ static int nfs_init_server(struct nfs_server *server, | |||
585 | struct nfs_client_initdata cl_init = { | 587 | struct nfs_client_initdata cl_init = { |
586 | .hostname = data->nfs_server.hostname, | 588 | .hostname = data->nfs_server.hostname, |
587 | .addr = &data->nfs_server.address, | 589 | .addr = &data->nfs_server.address, |
590 | .addrlen = sizeof(data->nfs_server.address), | ||
588 | .rpc_ops = &nfs_v2_clientops, | 591 | .rpc_ops = &nfs_v2_clientops, |
589 | }; | 592 | }; |
590 | struct nfs_client *clp; | 593 | struct nfs_client *clp; |
@@ -938,6 +941,7 @@ static int nfs4_set_client(struct nfs_server *server, | |||
938 | struct nfs_client_initdata cl_init = { | 941 | struct nfs_client_initdata cl_init = { |
939 | .hostname = hostname, | 942 | .hostname = hostname, |
940 | .addr = addr, | 943 | .addr = addr, |
944 | .addrlen = sizeof(*addr), | ||
941 | .rpc_ops = &nfs_v4_clientops, | 945 | .rpc_ops = &nfs_v4_clientops, |
942 | }; | 946 | }; |
943 | struct nfs_client *clp; | 947 | struct nfs_client *clp; |
diff --git a/include/linux/nfs_fs_sb.h b/include/linux/nfs_fs_sb.h index 0b3dcba3d97d..912cfe84ea86 100644 --- a/include/linux/nfs_fs_sb.h +++ b/include/linux/nfs_fs_sb.h | |||
@@ -21,7 +21,8 @@ struct nfs_client { | |||
21 | #define NFS_CS_CALLBACK 1 /* - callback started */ | 21 | #define NFS_CS_CALLBACK 1 /* - callback started */ |
22 | #define NFS_CS_IDMAP 2 /* - idmap started */ | 22 | #define NFS_CS_IDMAP 2 /* - idmap started */ |
23 | #define NFS_CS_RENEWD 3 /* - renewd started */ | 23 | #define NFS_CS_RENEWD 3 /* - renewd started */ |
24 | struct sockaddr_in cl_addr; /* server identifier */ | 24 | struct sockaddr_storage cl_addr; /* server identifier */ |
25 | size_t cl_addrlen; | ||
25 | char * cl_hostname; /* hostname of server */ | 26 | char * cl_hostname; /* hostname of server */ |
26 | struct list_head cl_share_link; /* link in global client list */ | 27 | struct list_head cl_share_link; /* link in global client list */ |
27 | struct list_head cl_superblocks; /* List of nfs_server structs */ | 28 | struct list_head cl_superblocks; /* List of nfs_server structs */ |