| [PATCH 1/7] SUNRPC: create rpcbind client in passed network namespace context [message #44577] | 
			Thu, 15 December 2011 16:01  | 
		 
		
			
				
				
				
					
						  
						Stanislav Kinsbursky
						 Messages: 683 Registered: October 2011 
						
					 | 
					Senior Member  | 
					 | 
		 
		 
	 | 
 
	
		Rpcbind clients are per network namespace. 
 
Signed-off-by: Stanislav Kinsbursky <skinsbursky@parallels.com> 
 
--- 
 net/sunrpc/rpcb_clnt.c |   11 ++++++----- 
 1 files changed, 6 insertions(+), 5 deletions(-) 
 
diff --git a/net/sunrpc/rpcb_clnt.c b/net/sunrpc/rpcb_clnt.c 
index 46f5915..43eff03 100644 
--- a/net/sunrpc/rpcb_clnt.c 
+++ b/net/sunrpc/rpcb_clnt.c 
@@ -344,11 +344,12 @@ out: 
 	return result; 
 } 
  
-static struct rpc_clnt *rpcb_create(char *hostname, struct sockaddr *srvaddr, 
-				    size_t salen, int proto, u32 version) 
+static struct rpc_clnt *rpcb_create(struct net *net, char *hostname, 
+				    struct sockaddr *srvaddr, size_t salen, 
+				    int proto, u32 version) 
 { 
 	struct rpc_create_args args = { 
-		.net		= &init_net, 
+		.net		= net, 
 		.protocol	= proto, 
 		.address	= srvaddr, 
 		.addrsize	= salen, 
@@ -708,8 +709,8 @@ void rpcb_getport_async(struct rpc_task *task) 
 	dprintk("RPC: %5u %s: trying rpcbind version %u\n", 
 		task->tk_pid, __func__, bind_version); 
  
-	rpcb_clnt = rpcb_create(clnt->cl_server, sap, salen, xprt->prot, 
-				bind_version); 
+	rpcb_clnt = rpcb_create(xprt->xprt_net, clnt->cl_server, sap, salen, 
+				xprt->prot, bind_version); 
 	if (IS_ERR(rpcb_clnt)) { 
 		status = PTR_ERR(rpcb_clnt); 
 		dprintk("RPC: %5u %s: rpcb_create failed, error %ld\n",
		
		
		
 |  
	| 
		
	 | 
 
 
 |