Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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
Loading
Loading
Loading
Loading
+6 −2
Original line number Diff line number Diff line
@@ -98,6 +98,7 @@ struct rpc_program nfsacl_program = {
struct nfs_client_initdata {
	const char *hostname;
	const struct sockaddr_in *addr;
	size_t addrlen;
	const struct nfs_rpc_ops *rpc_ops;
};

@@ -125,7 +126,8 @@ static struct nfs_client *nfs_alloc_client(const struct nfs_client_initdata *cl_
	atomic_set(&clp->cl_count, 1);
	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) {
		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,
	struct rpc_create_args args = {
		.protocol	= proto,
		.address	= (struct sockaddr *)&clp->cl_addr,
		.addrsize	= sizeof(clp->cl_addr),
		.addrsize	= clp->cl_addrlen,
		.timeout	= &timeparms,
		.servername	= clp->cl_hostname,
		.program	= &nfs_program,
@@ -585,6 +587,7 @@ static int nfs_init_server(struct nfs_server *server,
	struct nfs_client_initdata cl_init = {
		.hostname = data->nfs_server.hostname,
		.addr = &data->nfs_server.address,
		.addrlen = sizeof(data->nfs_server.address),
		.rpc_ops = &nfs_v2_clientops,
	};
	struct nfs_client *clp;
@@ -938,6 +941,7 @@ static int nfs4_set_client(struct nfs_server *server,
	struct nfs_client_initdata cl_init = {
		.hostname = hostname,
		.addr = addr,
		.addrlen = sizeof(*addr),
		.rpc_ops = &nfs_v4_clientops,
	};
	struct nfs_client *clp;
+2 −1
Original line number Diff line number Diff line
@@ -21,7 +21,8 @@ struct nfs_client {
#define NFS_CS_CALLBACK		1		/* - callback started */
#define NFS_CS_IDMAP		2		/* - idmap 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 */
	struct list_head	cl_share_link;	/* link in global client list */
	struct list_head	cl_superblocks;	/* List of nfs_server structs */