lkml.org 
[lkml]   [2011]   [Oct]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Subject[PATCH v3 3/3] SUNRPC: optimize net_ns dereferencing in rpcbind registering calls
    From
    Date
    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>

    ---
    net/sunrpc/rpcb_clnt.c | 18 +++++++++---------
    1 files changed, 9 insertions(+), 9 deletions(-)

    diff --git a/net/sunrpc/rpcb_clnt.c b/net/sunrpc/rpcb_clnt.c
    index 8c873a8..cc0f402 100644
    --- a/net/sunrpc/rpcb_clnt.c
    +++ b/net/sunrpc/rpcb_clnt.c
    @@ -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);

    @@ -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);

    @@ -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",
    @@ -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;


    \
     
     \ /
      Last update: 2011-10-27 20:31    [W:0.023 / U:0.224 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site