Skip to content

Commit

Permalink
SUNRPC: optimize net_ns dereferencing in rpcbind registering calls
Browse files Browse the repository at this point in the history
Static rpcbind registering functions can be parametrized by network namespace
pointer, calculated only once, instead of using init_net pointer (or taking it
from current when virtualization will be comleted) in many places.

Signed-off-by: Stanislav Kinsbursky <skinsbursky@parallels.com>
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
  • Loading branch information
Stanislav Kinsbursky authored and Trond Myklebust committed Feb 1, 2012
1 parent 2ea75a1 commit 1a114a6
Showing 1 changed file with 9 additions and 9 deletions.
18 changes: 9 additions & 9 deletions net/sunrpc/rpcb_clnt.c
Original file line number Diff line number Diff line change
Expand Up @@ -451,14 +451,14 @@ int rpcb_register(u32 prog, u32 vers, int prot, unsigned short port)
/*
* Fill in AF_INET family-specific arguments to register
*/
static int rpcb_register_inet4(const struct sockaddr *sap,
static int rpcb_register_inet4(struct sunrpc_net *sn,
const struct sockaddr *sap,
struct rpc_message *msg)
{
const struct sockaddr_in *sin = (const struct sockaddr_in *)sap;
struct rpcbind_args *map = msg->rpc_argp;
unsigned short port = ntohs(sin->sin_port);
int result;
struct sunrpc_net *sn = net_generic(&init_net, sunrpc_net_id);

map->r_addr = rpc_sockaddr2uaddr(sap, GFP_KERNEL);

Expand All @@ -479,14 +479,14 @@ static int rpcb_register_inet4(const struct sockaddr *sap,
/*
* Fill in AF_INET6 family-specific arguments to register
*/
static int rpcb_register_inet6(const struct sockaddr *sap,
static int rpcb_register_inet6(struct sunrpc_net *sn,
const struct sockaddr *sap,
struct rpc_message *msg)
{
const struct sockaddr_in6 *sin6 = (const struct sockaddr_in6 *)sap;
struct rpcbind_args *map = msg->rpc_argp;
unsigned short port = ntohs(sin6->sin6_port);
int result;
struct sunrpc_net *sn = net_generic(&init_net, sunrpc_net_id);

map->r_addr = rpc_sockaddr2uaddr(sap, GFP_KERNEL);

Expand All @@ -504,10 +504,10 @@ static int rpcb_register_inet6(const struct sockaddr *sap,
return result;
}

static int rpcb_unregister_all_protofamilies(struct rpc_message *msg)
static int rpcb_unregister_all_protofamilies(struct sunrpc_net *sn,
struct rpc_message *msg)
{
struct rpcbind_args *map = msg->rpc_argp;
struct sunrpc_net *sn = net_generic(&init_net, sunrpc_net_id);

dprintk("RPC: unregistering [%u, %u, '%s'] with "
"local rpcbind\n",
Expand Down Expand Up @@ -580,13 +580,13 @@ int rpcb_v4_register(const u32 program, const u32 version,
return -EPROTONOSUPPORT;

if (address == NULL)
return rpcb_unregister_all_protofamilies(&msg);
return rpcb_unregister_all_protofamilies(sn, &msg);

switch (address->sa_family) {
case AF_INET:
return rpcb_register_inet4(address, &msg);
return rpcb_register_inet4(sn, address, &msg);
case AF_INET6:
return rpcb_register_inet6(address, &msg);
return rpcb_register_inet6(sn, address, &msg);
}

return -EAFNOSUPPORT;
Expand Down

0 comments on commit 1a114a6

Please sign in to comment.