Linux NFS development
 help / color / mirror / Atom feed
* [PATCH] SUNRPC: cleanup transport creation argument passing
@ 2007-07-08 11:08 Frank van Maarseveen
  2007-07-09 12:45 ` Trond Myklebust
  2007-07-09 20:10 ` 2.6.22 " Frank van Maarseveen
  0 siblings, 2 replies; 4+ messages in thread
From: Frank van Maarseveen @ 2007-07-08 11:08 UTC (permalink / raw)
  To: Linux NFS mailing list

Cleanup argument passing to functions for creating an RPC transport.

Signed-off-by: Frank van Maarseveen <frankvm@frankvm.com>
---

diff -urp a/include/linux/sunrpc/xprt.h b/include/linux/sunrpc/xprt.h
--- a/include/linux/sunrpc/xprt.h	2007-02-27 20:29:06.000000000 +0100
+++ b/include/linux/sunrpc/xprt.h	2007-07-08 12:22:18.000000000 +0200
@@ -17,6 +17,8 @@
 #include <linux/sunrpc/xdr.h>
 #include <linux/sunrpc/msg_prot.h>
 
+#ifdef __KERNEL__
+
 extern unsigned int xprt_udp_slot_table_entries;
 extern unsigned int xprt_tcp_slot_table_entries;
 
@@ -191,7 +193,12 @@ struct rpc_xprt {
 	char *			address_strings[RPC_DISPLAY_MAX];
 };
 
-#ifdef __KERNEL__
+struct rpc_xprtsock_create {
+	int			proto;		/* IPPROTO_UDP or IPPROTO_TCP */
+	struct sockaddr *	dstaddr;	/* remote peer address */
+	size_t			addrlen;
+	struct rpc_timeout *	timeout;	/* optional timeout parameters */
+};
 
 /*
  * Transport operations used by ULPs
@@ -201,7 +208,7 @@ void			xprt_set_timeout(struct rpc_timeo
 /*
  * Generic internal transport functions
  */
-struct rpc_xprt *	xprt_create_transport(int proto, struct sockaddr *addr, size_t size, struct rpc_timeout *toparms);
+struct rpc_xprt *	xprt_create_transport(struct rpc_xprtsock_create *args);
 void			xprt_connect(struct rpc_task *task);
 void			xprt_reserve(struct rpc_task *task);
 int			xprt_reserve_xprt(struct rpc_task *task);
@@ -239,8 +246,8 @@ void			xprt_disconnect(struct rpc_xprt *
 /*
  * Socket transport setup operations
  */
-struct rpc_xprt *	xs_setup_udp(struct sockaddr *addr, size_t addrlen, struct rpc_timeout *to);
-struct rpc_xprt *	xs_setup_tcp(struct sockaddr *addr, size_t addrlen, struct rpc_timeout *to);
+struct rpc_xprt *	xs_setup_udp(struct rpc_xprtsock_create *args);
+struct rpc_xprt *	xs_setup_tcp(struct rpc_xprtsock_create *args);
 
 /*
  * Reserved bit positions in xprt->state
diff -urp a/net/sunrpc/clnt.c b/net/sunrpc/clnt.c
--- a/net/sunrpc/clnt.c	2007-05-12 21:28:21.000000000 +0200
+++ b/net/sunrpc/clnt.c	2007-07-08 12:14:30.000000000 +0200
@@ -207,9 +207,14 @@ struct rpc_clnt *rpc_create(struct rpc_c
 {
 	struct rpc_xprt *xprt;
 	struct rpc_clnt *clnt;
+	struct rpc_xprtsock_create xprtargs = {
+		.proto = args->protocol,
+		.dstaddr = args->address,
+		.addrlen = args->addrsize,
+		.timeout = args->timeout
+	};
 
-	xprt = xprt_create_transport(args->protocol, args->address,
-					args->addrsize, args->timeout);
+	xprt = xprt_create_transport(&xprtargs);
 	if (IS_ERR(xprt))
 		return (struct rpc_clnt *)xprt;
 
diff -urp a/net/sunrpc/xprt.c b/net/sunrpc/xprt.c
--- a/net/sunrpc/xprt.c	2007-05-12 21:28:21.000000000 +0200
+++ b/net/sunrpc/xprt.c	2007-07-08 11:51:36.000000000 +0200
@@ -887,27 +887,24 @@ void xprt_set_timeout(struct rpc_timeout
 
 /**
  * xprt_create_transport - create an RPC transport
- * @proto: requested transport protocol
- * @ap: remote peer address
- * @size: length of address
- * @to: timeout parameters
+ * @args: rpc transport creation arguments
  *
  */
-struct rpc_xprt *xprt_create_transport(int proto, struct sockaddr *ap, size_t size, struct rpc_timeout *to)
+struct rpc_xprt *xprt_create_transport(struct rpc_xprtsock_create *args)
 {
 	struct rpc_xprt	*xprt;
 	struct rpc_rqst	*req;
 
-	switch (proto) {
+	switch (args->proto) {
 	case IPPROTO_UDP:
-		xprt = xs_setup_udp(ap, size, to);
+		xprt = xs_setup_udp(args);
 		break;
 	case IPPROTO_TCP:
-		xprt = xs_setup_tcp(ap, size, to);
+		xprt = xs_setup_tcp(args);
 		break;
 	default:
 		printk(KERN_ERR "RPC: unrecognized transport protocol: %d\n",
-				proto);
+				args->proto);
 		return ERR_PTR(-EIO);
 	}
 	if (IS_ERR(xprt)) {
diff -urp a/net/sunrpc/xprtsock.c b/net/sunrpc/xprtsock.c
--- a/net/sunrpc/xprtsock.c	2007-05-12 21:28:21.000000000 +0200
+++ b/net/sunrpc/xprtsock.c	2007-07-08 12:16:16.000000000 +0200
@@ -1505,12 +1505,12 @@ static struct rpc_xprt_ops xs_tcp_ops = 
 	.print_stats		= xs_tcp_print_stats,
 };
 
-static struct rpc_xprt *xs_setup_xprt(struct sockaddr *addr, size_t addrlen, unsigned int slot_table_size)
+static struct rpc_xprt *xs_setup_xprt(struct rpc_xprtsock_create *args, unsigned int slot_table_size)
 {
 	struct rpc_xprt *xprt;
 	struct sock_xprt *new;
 
-	if (addrlen > sizeof(xprt->addr)) {
+	if (args->addrlen > sizeof(xprt->addr)) {
 		dprintk("RPC:       xs_setup_xprt: address too large\n");
 		return ERR_PTR(-EBADF);
 	}
@@ -1532,8 +1532,8 @@ static struct rpc_xprt *xs_setup_xprt(st
 		return ERR_PTR(-ENOMEM);
 	}
 
-	memcpy(&xprt->addr, addr, addrlen);
-	xprt->addrlen = addrlen;
+	memcpy(&xprt->addr, args->dstaddr, args->addrlen);
+	xprt->addrlen = args->addrlen;
 	new->port = xs_get_random_port();
 
 	return xprt;
@@ -1541,22 +1541,20 @@ static struct rpc_xprt *xs_setup_xprt(st
 
 /**
  * xs_setup_udp - Set up transport to use a UDP socket
- * @addr: address of remote server
- * @addrlen: length of address in bytes
- * @to:   timeout parameters
+ * @args: rpc transport creation arguments
  *
  */
-struct rpc_xprt *xs_setup_udp(struct sockaddr *addr, size_t addrlen, struct rpc_timeout *to)
+struct rpc_xprt *xs_setup_udp(struct rpc_xprtsock_create *args)
 {
 	struct rpc_xprt *xprt;
 	struct sock_xprt *transport;
 
-	xprt = xs_setup_xprt(addr, addrlen, xprt_udp_slot_table_entries);
+	xprt = xs_setup_xprt(args, xprt_udp_slot_table_entries);
 	if (IS_ERR(xprt))
 		return xprt;
 	transport = container_of(xprt, struct sock_xprt, xprt);
 
-	if (ntohs(((struct sockaddr_in *)addr)->sin_port) != 0)
+	if (ntohs(((struct sockaddr_in *)args->dstaddr)->sin_port) != 0)
 		xprt_set_bound(xprt);
 
 	xprt->prot = IPPROTO_UDP;
@@ -1572,8 +1570,8 @@ struct rpc_xprt *xs_setup_udp(struct soc
 
 	xprt->ops = &xs_udp_ops;
 
-	if (to)
-		xprt->timeout = *to;
+	if (args->timeout)
+		xprt->timeout = *args->timeout;
 	else
 		xprt_set_timeout(&xprt->timeout, 5, 5 * HZ);
 
@@ -1586,22 +1584,20 @@ struct rpc_xprt *xs_setup_udp(struct soc
 
 /**
  * xs_setup_tcp - Set up transport to use a TCP socket
- * @addr: address of remote server
- * @addrlen: length of address in bytes
- * @to: timeout parameters
+ * @args: rpc transport creation arguments
  *
  */
-struct rpc_xprt *xs_setup_tcp(struct sockaddr *addr, size_t addrlen, struct rpc_timeout *to)
+struct rpc_xprt *xs_setup_tcp(struct rpc_xprtsock_create *args)
 {
 	struct rpc_xprt *xprt;
 	struct sock_xprt *transport;
 
-	xprt = xs_setup_xprt(addr, addrlen, xprt_tcp_slot_table_entries);
+	xprt = xs_setup_xprt(args, xprt_tcp_slot_table_entries);
 	if (IS_ERR(xprt))
 		return xprt;
 	transport = container_of(xprt, struct sock_xprt, xprt);
 
-	if (ntohs(((struct sockaddr_in *)addr)->sin_port) != 0)
+	if (ntohs(((struct sockaddr_in *)args->dstaddr)->sin_port) != 0)
 		xprt_set_bound(xprt);
 
 	xprt->prot = IPPROTO_TCP;
@@ -1616,8 +1612,8 @@ struct rpc_xprt *xs_setup_tcp(struct soc
 
 	xprt->ops = &xs_tcp_ops;
 
-	if (to)
-		xprt->timeout = *to;
+	if (args->timeout)
+		xprt->timeout = *args->timeout;
 	else
 		xprt_set_timeout(&xprt->timeout, 2, 60 * HZ);
 

-- 
Frank

-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
NFS maillist  -  NFS@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/nfs

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] SUNRPC: cleanup transport creation argument passing
  2007-07-08 11:08 [PATCH] SUNRPC: cleanup transport creation argument passing Frank van Maarseveen
@ 2007-07-09 12:45 ` Trond Myklebust
  2007-07-09 20:10 ` 2.6.22 " Frank van Maarseveen
  1 sibling, 0 replies; 4+ messages in thread
From: Trond Myklebust @ 2007-07-09 12:45 UTC (permalink / raw)
  To: Frank van Maarseveen; +Cc: Linux NFS mailing list

On Sun, 2007-07-08 at 13:08 +0200, Frank van Maarseveen wrote:
> Cleanup argument passing to functions for creating an RPC transport.
> 
> Signed-off-by: Frank van Maarseveen <frankvm@frankvm.com>

That looks good. Thanks Frank!

   Trond

> ---
> 
> diff -urp a/include/linux/sunrpc/xprt.h b/include/linux/sunrpc/xprt.h
> --- a/include/linux/sunrpc/xprt.h	2007-02-27 20:29:06.000000000 +0100
> +++ b/include/linux/sunrpc/xprt.h	2007-07-08 12:22:18.000000000 +0200
> @@ -17,6 +17,8 @@
>  #include <linux/sunrpc/xdr.h>
>  #include <linux/sunrpc/msg_prot.h>
>  
> +#ifdef __KERNEL__
> +
>  extern unsigned int xprt_udp_slot_table_entries;
>  extern unsigned int xprt_tcp_slot_table_entries;
>  
> @@ -191,7 +193,12 @@ struct rpc_xprt {
>  	char *			address_strings[RPC_DISPLAY_MAX];
>  };
>  
> -#ifdef __KERNEL__
> +struct rpc_xprtsock_create {
> +	int			proto;		/* IPPROTO_UDP or IPPROTO_TCP */
> +	struct sockaddr *	dstaddr;	/* remote peer address */
> +	size_t			addrlen;
> +	struct rpc_timeout *	timeout;	/* optional timeout parameters */
> +};
>  
>  /*
>   * Transport operations used by ULPs
> @@ -201,7 +208,7 @@ void			xprt_set_timeout(struct rpc_timeo
>  /*
>   * Generic internal transport functions
>   */
> -struct rpc_xprt *	xprt_create_transport(int proto, struct sockaddr *addr, size_t size, struct rpc_timeout *toparms);
> +struct rpc_xprt *	xprt_create_transport(struct rpc_xprtsock_create *args);
>  void			xprt_connect(struct rpc_task *task);
>  void			xprt_reserve(struct rpc_task *task);
>  int			xprt_reserve_xprt(struct rpc_task *task);
> @@ -239,8 +246,8 @@ void			xprt_disconnect(struct rpc_xprt *
>  /*
>   * Socket transport setup operations
>   */
> -struct rpc_xprt *	xs_setup_udp(struct sockaddr *addr, size_t addrlen, struct rpc_timeout *to);
> -struct rpc_xprt *	xs_setup_tcp(struct sockaddr *addr, size_t addrlen, struct rpc_timeout *to);
> +struct rpc_xprt *	xs_setup_udp(struct rpc_xprtsock_create *args);
> +struct rpc_xprt *	xs_setup_tcp(struct rpc_xprtsock_create *args);
>  
>  /*
>   * Reserved bit positions in xprt->state
> diff -urp a/net/sunrpc/clnt.c b/net/sunrpc/clnt.c
> --- a/net/sunrpc/clnt.c	2007-05-12 21:28:21.000000000 +0200
> +++ b/net/sunrpc/clnt.c	2007-07-08 12:14:30.000000000 +0200
> @@ -207,9 +207,14 @@ struct rpc_clnt *rpc_create(struct rpc_c
>  {
>  	struct rpc_xprt *xprt;
>  	struct rpc_clnt *clnt;
> +	struct rpc_xprtsock_create xprtargs = {
> +		.proto = args->protocol,
> +		.dstaddr = args->address,
> +		.addrlen = args->addrsize,
> +		.timeout = args->timeout
> +	};
>  
> -	xprt = xprt_create_transport(args->protocol, args->address,
> -					args->addrsize, args->timeout);
> +	xprt = xprt_create_transport(&xprtargs);
>  	if (IS_ERR(xprt))
>  		return (struct rpc_clnt *)xprt;
>  
> diff -urp a/net/sunrpc/xprt.c b/net/sunrpc/xprt.c
> --- a/net/sunrpc/xprt.c	2007-05-12 21:28:21.000000000 +0200
> +++ b/net/sunrpc/xprt.c	2007-07-08 11:51:36.000000000 +0200
> @@ -887,27 +887,24 @@ void xprt_set_timeout(struct rpc_timeout
>  
>  /**
>   * xprt_create_transport - create an RPC transport
> - * @proto: requested transport protocol
> - * @ap: remote peer address
> - * @size: length of address
> - * @to: timeout parameters
> + * @args: rpc transport creation arguments
>   *
>   */
> -struct rpc_xprt *xprt_create_transport(int proto, struct sockaddr *ap, size_t size, struct rpc_timeout *to)
> +struct rpc_xprt *xprt_create_transport(struct rpc_xprtsock_create *args)
>  {
>  	struct rpc_xprt	*xprt;
>  	struct rpc_rqst	*req;
>  
> -	switch (proto) {
> +	switch (args->proto) {
>  	case IPPROTO_UDP:
> -		xprt = xs_setup_udp(ap, size, to);
> +		xprt = xs_setup_udp(args);
>  		break;
>  	case IPPROTO_TCP:
> -		xprt = xs_setup_tcp(ap, size, to);
> +		xprt = xs_setup_tcp(args);
>  		break;
>  	default:
>  		printk(KERN_ERR "RPC: unrecognized transport protocol: %d\n",
> -				proto);
> +				args->proto);
>  		return ERR_PTR(-EIO);
>  	}
>  	if (IS_ERR(xprt)) {
> diff -urp a/net/sunrpc/xprtsock.c b/net/sunrpc/xprtsock.c
> --- a/net/sunrpc/xprtsock.c	2007-05-12 21:28:21.000000000 +0200
> +++ b/net/sunrpc/xprtsock.c	2007-07-08 12:16:16.000000000 +0200
> @@ -1505,12 +1505,12 @@ static struct rpc_xprt_ops xs_tcp_ops = 
>  	.print_stats		= xs_tcp_print_stats,
>  };
>  
> -static struct rpc_xprt *xs_setup_xprt(struct sockaddr *addr, size_t addrlen, unsigned int slot_table_size)
> +static struct rpc_xprt *xs_setup_xprt(struct rpc_xprtsock_create *args, unsigned int slot_table_size)
>  {
>  	struct rpc_xprt *xprt;
>  	struct sock_xprt *new;
>  
> -	if (addrlen > sizeof(xprt->addr)) {
> +	if (args->addrlen > sizeof(xprt->addr)) {
>  		dprintk("RPC:       xs_setup_xprt: address too large\n");
>  		return ERR_PTR(-EBADF);
>  	}
> @@ -1532,8 +1532,8 @@ static struct rpc_xprt *xs_setup_xprt(st
>  		return ERR_PTR(-ENOMEM);
>  	}
>  
> -	memcpy(&xprt->addr, addr, addrlen);
> -	xprt->addrlen = addrlen;
> +	memcpy(&xprt->addr, args->dstaddr, args->addrlen);
> +	xprt->addrlen = args->addrlen;
>  	new->port = xs_get_random_port();
>  
>  	return xprt;
> @@ -1541,22 +1541,20 @@ static struct rpc_xprt *xs_setup_xprt(st
>  
>  /**
>   * xs_setup_udp - Set up transport to use a UDP socket
> - * @addr: address of remote server
> - * @addrlen: length of address in bytes
> - * @to:   timeout parameters
> + * @args: rpc transport creation arguments
>   *
>   */
> -struct rpc_xprt *xs_setup_udp(struct sockaddr *addr, size_t addrlen, struct rpc_timeout *to)
> +struct rpc_xprt *xs_setup_udp(struct rpc_xprtsock_create *args)
>  {
>  	struct rpc_xprt *xprt;
>  	struct sock_xprt *transport;
>  
> -	xprt = xs_setup_xprt(addr, addrlen, xprt_udp_slot_table_entries);
> +	xprt = xs_setup_xprt(args, xprt_udp_slot_table_entries);
>  	if (IS_ERR(xprt))
>  		return xprt;
>  	transport = container_of(xprt, struct sock_xprt, xprt);
>  
> -	if (ntohs(((struct sockaddr_in *)addr)->sin_port) != 0)
> +	if (ntohs(((struct sockaddr_in *)args->dstaddr)->sin_port) != 0)
>  		xprt_set_bound(xprt);
>  
>  	xprt->prot = IPPROTO_UDP;
> @@ -1572,8 +1570,8 @@ struct rpc_xprt *xs_setup_udp(struct soc
>  
>  	xprt->ops = &xs_udp_ops;
>  
> -	if (to)
> -		xprt->timeout = *to;
> +	if (args->timeout)
> +		xprt->timeout = *args->timeout;
>  	else
>  		xprt_set_timeout(&xprt->timeout, 5, 5 * HZ);
>  
> @@ -1586,22 +1584,20 @@ struct rpc_xprt *xs_setup_udp(struct soc
>  
>  /**
>   * xs_setup_tcp - Set up transport to use a TCP socket
> - * @addr: address of remote server
> - * @addrlen: length of address in bytes
> - * @to: timeout parameters
> + * @args: rpc transport creation arguments
>   *
>   */
> -struct rpc_xprt *xs_setup_tcp(struct sockaddr *addr, size_t addrlen, struct rpc_timeout *to)
> +struct rpc_xprt *xs_setup_tcp(struct rpc_xprtsock_create *args)
>  {
>  	struct rpc_xprt *xprt;
>  	struct sock_xprt *transport;
>  
> -	xprt = xs_setup_xprt(addr, addrlen, xprt_tcp_slot_table_entries);
> +	xprt = xs_setup_xprt(args, xprt_tcp_slot_table_entries);
>  	if (IS_ERR(xprt))
>  		return xprt;
>  	transport = container_of(xprt, struct sock_xprt, xprt);
>  
> -	if (ntohs(((struct sockaddr_in *)addr)->sin_port) != 0)
> +	if (ntohs(((struct sockaddr_in *)args->dstaddr)->sin_port) != 0)
>  		xprt_set_bound(xprt);
>  
>  	xprt->prot = IPPROTO_TCP;
> @@ -1616,8 +1612,8 @@ struct rpc_xprt *xs_setup_tcp(struct soc
>  
>  	xprt->ops = &xs_tcp_ops;
>  
> -	if (to)
> -		xprt->timeout = *to;
> +	if (args->timeout)
> +		xprt->timeout = *args->timeout;
>  	else
>  		xprt_set_timeout(&xprt->timeout, 2, 60 * HZ);
>  
> 


-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
NFS maillist  -  NFS@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/nfs

^ permalink raw reply	[flat|nested] 4+ messages in thread

* 2.6.22 [PATCH] SUNRPC: cleanup transport creation argument passing
  2007-07-08 11:08 [PATCH] SUNRPC: cleanup transport creation argument passing Frank van Maarseveen
  2007-07-09 12:45 ` Trond Myklebust
@ 2007-07-09 20:10 ` Frank van Maarseveen
  2007-07-09 20:33   ` Frank van Maarseveen
  1 sibling, 1 reply; 4+ messages in thread
From: Frank van Maarseveen @ 2007-07-09 20:10 UTC (permalink / raw)
  To: Linux NFS mailing list

Cleanup argument passing to functions for creating an RPC transport

Signed-off-by: Frank van Maarseveen <frankvm@frankvm.com>
---

diff -urp a/include/linux/sunrpc/xprt.h b/include/linux/sunrpc/xprt.h
--- a/include/linux/sunrpc/xprt.h	2007-07-09 19:43:50.000000000 +0200
+++ b/include/linux/sunrpc/xprt.h	2007-07-09 19:48:04.000000000 +0200
@@ -17,6 +17,8 @@
 #include <linux/sunrpc/xdr.h>
 #include <linux/sunrpc/msg_prot.h>
 
+#ifdef __KERNEL__
+
 extern unsigned int xprt_udp_slot_table_entries;
 extern unsigned int xprt_tcp_slot_table_entries;
 
@@ -194,7 +196,12 @@ struct rpc_xprt {
 	char *			address_strings[RPC_DISPLAY_MAX];
 };
 
-#ifdef __KERNEL__
+struct rpc_xprtsock_create {
+	int			proto;		/* IPPROTO_UDP or IPPROTO_TCP */
+	struct sockaddr *	dstaddr;	/* remote peer address */
+	size_t			addrlen;
+	struct rpc_timeout *	timeout;	/* optional timeout parameters */
+};
 
 /*
  * Transport operations used by ULPs
@@ -204,7 +211,7 @@ void			xprt_set_timeout(struct rpc_timeo
 /*
  * Generic internal transport functions
  */
-struct rpc_xprt *	xprt_create_transport(int proto, struct sockaddr *addr, size_t size, struct rpc_timeout *toparms);
+struct rpc_xprt *	xprt_create_transport(struct rpc_xprtsock_create *args);
 void			xprt_connect(struct rpc_task *task);
 void			xprt_reserve(struct rpc_task *task);
 int			xprt_reserve_xprt(struct rpc_task *task);
@@ -242,8 +249,8 @@ void			xprt_disconnect(struct rpc_xprt *
 /*
  * Socket transport setup operations
  */
-struct rpc_xprt *	xs_setup_udp(struct sockaddr *addr, size_t addrlen, struct rpc_timeout *to);
-struct rpc_xprt *	xs_setup_tcp(struct sockaddr *addr, size_t addrlen, struct rpc_timeout *to);
+struct rpc_xprt *	xs_setup_udp(struct rpc_xprtsock_create *args);
+struct rpc_xprt *	xs_setup_tcp(struct rpc_xprtsock_create *args);
 int			init_socket_xprt(void);
 void			cleanup_socket_xprt(void);
 
diff -urp a/net/sunrpc/clnt.c b/net/sunrpc/clnt.c
--- a/net/sunrpc/clnt.c	2007-07-09 19:43:54.000000000 +0200
+++ b/net/sunrpc/clnt.c	2007-07-09 19:46:35.000000000 +0200
@@ -205,9 +205,14 @@ struct rpc_clnt *rpc_create(struct rpc_c
 {
 	struct rpc_xprt *xprt;
 	struct rpc_clnt *clnt;
+	struct rpc_xprtsock_create xprtargs = {
+		.proto = args->protocol,
+		.dstaddr = args->address,
+		.addrlen = args->addrsize,
+		.timeout = args->timeout
+	};
 
-	xprt = xprt_create_transport(args->protocol, args->address,
-					args->addrsize, args->timeout);
+	xprt = xprt_create_transport(&xprtargs);
 	if (IS_ERR(xprt))
 		return (struct rpc_clnt *)xprt;
 
diff -urp a/net/sunrpc/xprt.c b/net/sunrpc/xprt.c
--- a/net/sunrpc/xprt.c	2007-07-09 19:43:54.000000000 +0200
+++ b/net/sunrpc/xprt.c	2007-07-09 19:46:35.000000000 +0200
@@ -886,27 +886,24 @@ void xprt_set_timeout(struct rpc_timeout
 
 /**
  * xprt_create_transport - create an RPC transport
- * @proto: requested transport protocol
- * @ap: remote peer address
- * @size: length of address
- * @to: timeout parameters
+ * @args: rpc transport creation arguments
  *
  */
-struct rpc_xprt *xprt_create_transport(int proto, struct sockaddr *ap, size_t size, struct rpc_timeout *to)
+struct rpc_xprt *xprt_create_transport(struct rpc_xprtsock_create *args)
 {
 	struct rpc_xprt	*xprt;
 	struct rpc_rqst	*req;
 
-	switch (proto) {
+	switch (args->proto) {
 	case IPPROTO_UDP:
-		xprt = xs_setup_udp(ap, size, to);
+		xprt = xs_setup_udp(args);
 		break;
 	case IPPROTO_TCP:
-		xprt = xs_setup_tcp(ap, size, to);
+		xprt = xs_setup_tcp(args);
 		break;
 	default:
 		printk(KERN_ERR "RPC: unrecognized transport protocol: %d\n",
-				proto);
+				args->proto);
 		return ERR_PTR(-EIO);
 	}
 	if (IS_ERR(xprt)) {
diff -urp a/net/sunrpc/xprtsock.c b/net/sunrpc/xprtsock.c
--- a/net/sunrpc/xprtsock.c	2007-07-09 19:43:54.000000000 +0200
+++ b/net/sunrpc/xprtsock.c	2007-07-09 19:46:35.000000000 +0200
@@ -1505,12 +1505,12 @@ static struct rpc_xprt_ops xs_tcp_ops = 
 	.print_stats		= xs_tcp_print_stats,
 };
 
-static struct rpc_xprt *xs_setup_xprt(struct sockaddr *addr, size_t addrlen, unsigned int slot_table_size)
+static struct rpc_xprt *xs_setup_xprt(struct rpc_xprtsock_create *args, unsigned int slot_table_size)
 {
 	struct rpc_xprt *xprt;
 	struct sock_xprt *new;
 
-	if (addrlen > sizeof(xprt->addr)) {
+	if (args->addrlen > sizeof(xprt->addr)) {
 		dprintk("RPC:       xs_setup_xprt: address too large\n");
 		return ERR_PTR(-EBADF);
 	}
@@ -1532,8 +1532,8 @@ static struct rpc_xprt *xs_setup_xprt(st
 		return ERR_PTR(-ENOMEM);
 	}
 
-	memcpy(&xprt->addr, addr, addrlen);
-	xprt->addrlen = addrlen;
+	memcpy(&xprt->addr, args->dstaddr, args->addrlen);
+	xprt->addrlen = args->addrlen;
 	new->port = xs_get_random_port();
 
 	return xprt;
@@ -1541,22 +1541,20 @@ static struct rpc_xprt *xs_setup_xprt(st
 
 /**
  * xs_setup_udp - Set up transport to use a UDP socket
- * @addr: address of remote server
- * @addrlen: length of address in bytes
- * @to:   timeout parameters
+ * @args: rpc transport creation arguments
  *
  */
-struct rpc_xprt *xs_setup_udp(struct sockaddr *addr, size_t addrlen, struct rpc_timeout *to)
+struct rpc_xprt *xs_setup_udp(struct rpc_xprtsock_create *args)
 {
 	struct rpc_xprt *xprt;
 	struct sock_xprt *transport;
 
-	xprt = xs_setup_xprt(addr, addrlen, xprt_udp_slot_table_entries);
+	xprt = xs_setup_xprt(args, xprt_udp_slot_table_entries);
 	if (IS_ERR(xprt))
 		return xprt;
 	transport = container_of(xprt, struct sock_xprt, xprt);
 
-	if (ntohs(((struct sockaddr_in *)addr)->sin_port) != 0)
+	if (ntohs(((struct sockaddr_in *)args->dstaddr)->sin_port) != 0)
 		xprt_set_bound(xprt);
 
 	xprt->prot = IPPROTO_UDP;
@@ -1572,8 +1570,8 @@ struct rpc_xprt *xs_setup_udp(struct soc
 
 	xprt->ops = &xs_udp_ops;
 
-	if (to)
-		xprt->timeout = *to;
+	if (args->timeout)
+		xprt->timeout = *args->timeout;
 	else
 		xprt_set_timeout(&xprt->timeout, 5, 5 * HZ);
 
@@ -1586,22 +1584,20 @@ struct rpc_xprt *xs_setup_udp(struct soc
 
 /**
  * xs_setup_tcp - Set up transport to use a TCP socket
- * @addr: address of remote server
- * @addrlen: length of address in bytes
- * @to: timeout parameters
+ * @args: rpc transport creation arguments
  *
  */
-struct rpc_xprt *xs_setup_tcp(struct sockaddr *addr, size_t addrlen, struct rpc_timeout *to)
+struct rpc_xprt *xs_setup_tcp(struct rpc_xprtsock_create *args)
 {
 	struct rpc_xprt *xprt;
 	struct sock_xprt *transport;
 
-	xprt = xs_setup_xprt(addr, addrlen, xprt_tcp_slot_table_entries);
+	xprt = xs_setup_xprt(args, xprt_tcp_slot_table_entries);
 	if (IS_ERR(xprt))
 		return xprt;
 	transport = container_of(xprt, struct sock_xprt, xprt);
 
-	if (ntohs(((struct sockaddr_in *)addr)->sin_port) != 0)
+	if (ntohs(((struct sockaddr_in *)args->dstaddr)->sin_port) != 0)
 		xprt_set_bound(xprt);
 
 	xprt->prot = IPPROTO_TCP;
@@ -1616,8 +1612,8 @@ struct rpc_xprt *xs_setup_tcp(struct soc
 
 	xprt->ops = &xs_tcp_ops;
 
-	if (to)
-		xprt->timeout = *to;
+	if (args->timeout)
+		xprt->timeout = *args->timeout;
 	else
 		xprt_set_timeout(&xprt->timeout, 2, 60 * HZ);
 

-- 
Frank

-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
NFS maillist  -  NFS@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/nfs

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: 2.6.22 [PATCH] SUNRPC: cleanup transport creation argument passing
  2007-07-09 20:10 ` 2.6.22 " Frank van Maarseveen
@ 2007-07-09 20:33   ` Frank van Maarseveen
  0 siblings, 0 replies; 4+ messages in thread
From: Frank van Maarseveen @ 2007-07-09 20:33 UTC (permalink / raw)
  To: Linux NFS mailing list

Already included in the new NFS client patchset I see, Thanks!

-- 
Frank

-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
NFS maillist  -  NFS@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/nfs

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2007-07-09 20:33 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-07-08 11:08 [PATCH] SUNRPC: cleanup transport creation argument passing Frank van Maarseveen
2007-07-09 12:45 ` Trond Myklebust
2007-07-09 20:10 ` 2.6.22 " Frank van Maarseveen
2007-07-09 20:33   ` Frank van Maarseveen

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox