sunrpc: honor rpc_task's timeout value in rpcb_create()
authorEryu Guan <eguan@linux.alibaba.com>
Mon, 22 Mar 2021 05:29:04 +0000 (13:29 +0800)
committerTrond Myklebust <trond.myklebust@hammerspace.com>
Mon, 5 Apr 2021 13:04:21 +0000 (09:04 -0400)
Currently rpcbind client is created without setting rpc timeout (thus
using the default value). But if the rpc_task already has a customized
timeout in its tk_client field, it's also ignored.

Let's use the same timeout setting in rpc_task->tk_client->cl_timeout
for rpcbind connection.

Signed-off-by: Eryu Guan <eguan@linux.alibaba.com>
Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
net/sunrpc/rpcb_clnt.c

index 38fe2ce..647b323 100644 (file)
@@ -344,13 +344,15 @@ static struct rpc_clnt *rpcb_create(struct net *net, const char *nodename,
                                    const char *hostname,
                                    struct sockaddr *srvaddr, size_t salen,
                                    int proto, u32 version,
-                                   const struct cred *cred)
+                                   const struct cred *cred,
+                                   const struct rpc_timeout *timeo)
 {
        struct rpc_create_args args = {
                .net            = net,
                .protocol       = proto,
                .address        = srvaddr,
                .addrsize       = salen,
+               .timeout        = timeo,
                .servername     = hostname,
                .nodename       = nodename,
                .program        = &rpcb_program,
@@ -705,7 +707,8 @@ void rpcb_getport_async(struct rpc_task *task)
                                clnt->cl_nodename,
                                xprt->servername, sap, salen,
                                xprt->prot, bind_version,
-                               clnt->cl_cred);
+                               clnt->cl_cred,
+                               task->tk_client->cl_timeout);
        if (IS_ERR(rpcb_clnt)) {
                status = PTR_ERR(rpcb_clnt);
                goto bailout_nofree;