2011-03-31 07:47:53

by Rob Landley

[permalink] [raw]
Subject: [PATCH 2/3] Supply network namespace to rpcbind.

From: Rob Landley <[email protected]>

The sunrpc code already has some support for network namespaces,
but rpcb_create() is still using init_net. Its arguments include
a sockaddr and a port, but not a struct net *. Add one, and
pass in the value from rpc_xprt when calling it.

Signed-off-by: Rob Landley <[email protected]>
---

net/sunrpc/rpcb_clnt.c | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/net/sunrpc/rpcb_clnt.c b/net/sunrpc/rpcb_clnt.c
index c652e4c..25bb8f9 100644
--- a/net/sunrpc/rpcb_clnt.c
+++ b/net/sunrpc/rpcb_clnt.c
@@ -223,10 +223,11 @@ out:
}

static struct rpc_clnt *rpcb_create(char *hostname, struct sockaddr *srvaddr,
- size_t salen, int proto, u32 version)
+ size_t salen, int proto, struct net *net,
+ u32 version)
{
struct rpc_create_args args = {
- .net = &init_net,
+ .net = net,
.protocol = proto,
.address = srvaddr,
.addrsize = salen,
@@ -591,7 +592,7 @@ void rpcb_getport_async(struct rpc_task *task)
task->tk_pid, __func__, bind_version);

rpcb_clnt = rpcb_create(clnt->cl_server, sap, salen, xprt->prot,
- bind_version);
+ xprt->xprt_net, bind_version);
if (IS_ERR(rpcb_clnt)) {
status = PTR_ERR(rpcb_clnt);
dprintk("RPC: %5u %s: rpcb_create failed, error %ld\n",


2011-04-05 03:01:07

by Serge E. Hallyn

[permalink] [raw]
Subject: Re: [PATCH 2/3] Supply network namespace to rpcbind.

Quoting Rob Landley ([email protected]):
> From: Rob Landley <[email protected]>
>
> The sunrpc code already has some support for network namespaces,
> but rpcb_create() is still using init_net. Its arguments include
> a sockaddr and a port, but not a struct net *. Add one, and
> pass in the value from rpc_xprt when calling it.
>
> Signed-off-by: Rob Landley <[email protected]>

Acked-by: Serge Hallyn <[email protected]>

> ---
>
> net/sunrpc/rpcb_clnt.c | 7 ++++---
> 1 file changed, 4 insertions(+), 3 deletions(-)
>
> diff --git a/net/sunrpc/rpcb_clnt.c b/net/sunrpc/rpcb_clnt.c
> index c652e4c..25bb8f9 100644
> --- a/net/sunrpc/rpcb_clnt.c
> +++ b/net/sunrpc/rpcb_clnt.c
> @@ -223,10 +223,11 @@ out:
> }
>
> static struct rpc_clnt *rpcb_create(char *hostname, struct sockaddr *srvaddr,
> - size_t salen, int proto, u32 version)
> + size_t salen, int proto, struct net *net,
> + u32 version)
> {
> struct rpc_create_args args = {
> - .net = &init_net,
> + .net = net,
> .protocol = proto,
> .address = srvaddr,
> .addrsize = salen,
> @@ -591,7 +592,7 @@ void rpcb_getport_async(struct rpc_task *task)
> task->tk_pid, __func__, bind_version);
>
> rpcb_clnt = rpcb_create(clnt->cl_server, sap, salen, xprt->prot,
> - bind_version);
> + xprt->xprt_net, bind_version);
> if (IS_ERR(rpcb_clnt)) {
> status = PTR_ERR(rpcb_clnt);
> dprintk("RPC: %5u %s: rpcb_create failed, error %ld\n",
> _______________________________________________
> Containers mailing list
> [email protected]
> https://lists.linux-foundation.org/mailman/listinfo/containers

2011-04-06 00:57:47

by Kirill A. Shutemov

[permalink] [raw]
Subject: Re: [PATCH 2/3] Supply network namespace to rpcbind.

On Thu, Mar 31, 2011 at 02:47:43AM -0500, Rob Landley wrote:
> From: Rob Landley <[email protected]>
>
> The sunrpc code already has some support for network namespaces,
> but rpcb_create() is still using init_net. Its arguments include
> a sockaddr and a port, but not a struct net *. Add one, and
> pass in the value from rpc_xprt when calling it.
>
> Signed-off-by: Rob Landley <[email protected]>

Acked-by: Kirill A. Shutemov <[email protected]>

BTW, it seems conflicts with my rpc_pipefs patchset. I'll rebase my
patchset, if your patches will be merged first.

> ---
>
> net/sunrpc/rpcb_clnt.c | 7 ++++---
> 1 file changed, 4 insertions(+), 3 deletions(-)
>
> diff --git a/net/sunrpc/rpcb_clnt.c b/net/sunrpc/rpcb_clnt.c
> index c652e4c..25bb8f9 100644
> --- a/net/sunrpc/rpcb_clnt.c
> +++ b/net/sunrpc/rpcb_clnt.c
> @@ -223,10 +223,11 @@ out:
> }
>
> static struct rpc_clnt *rpcb_create(char *hostname, struct sockaddr *srvaddr,
> - size_t salen, int proto, u32 version)
> + size_t salen, int proto, struct net *net,
> + u32 version)
> {
> struct rpc_create_args args = {
> - .net = &init_net,
> + .net = net,
> .protocol = proto,
> .address = srvaddr,
> .addrsize = salen,
> @@ -591,7 +592,7 @@ void rpcb_getport_async(struct rpc_task *task)
> task->tk_pid, __func__, bind_version);
>
> rpcb_clnt = rpcb_create(clnt->cl_server, sap, salen, xprt->prot,
> - bind_version);
> + xprt->xprt_net, bind_version);
> if (IS_ERR(rpcb_clnt)) {
> status = PTR_ERR(rpcb_clnt);
> dprintk("RPC: %5u %s: rpcb_create failed, error %ld\n",
> _______________________________________________
> Containers mailing list
> [email protected]
> https://lists.linux-foundation.org/mailman/listinfo/containers

--
Kirill A. Shutemov

2011-04-06 11:48:39

by Rob Landley

[permalink] [raw]
Subject: Re: [PATCH 2/3] Supply network namespace to rpcbind.

On 04/05/2011 07:57 PM, Kirill A. Shutemov wrote:
> On Thu, Mar 31, 2011 at 02:47:43AM -0500, Rob Landley wrote:
>> From: Rob Landley <[email protected]>
>>
>> The sunrpc code already has some support for network namespaces,
>> but rpcb_create() is still using init_net. Its arguments include
>> a sockaddr and a port, but not a struct net *. Add one, and
>> pass in the value from rpc_xprt when calling it.
>>
>> Signed-off-by: Rob Landley <[email protected]>
>
> Acked-by: Kirill A. Shutemov <[email protected]>
>
> BTW, it seems conflicts with my rpc_pipefs patchset. I'll rebase my
> patchset, if your patches will be merged first.

And vice versa, lemme know which order you want them in.

Thanks,

Rob