OSDN Git Service

SUNRPC: Clean up
authorTrond Myklebust <trond.myklebust@hammerspace.com>
Sat, 9 Mar 2019 21:06:47 +0000 (16:06 -0500)
committerTrond Myklebust <trond.myklebust@hammerspace.com>
Sat, 9 Mar 2019 21:22:58 +0000 (16:22 -0500)
Replace remaining callers of call_timeout() with rpc_check_timeout().

Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
net/sunrpc/clnt.c

index 311029b..a0e7322 100644 (file)
@@ -70,7 +70,6 @@ static void   call_status(struct rpc_task *task);
 static void    call_transmit_status(struct rpc_task *task);
 static void    call_refresh(struct rpc_task *task);
 static void    call_refreshresult(struct rpc_task *task);
-static void    call_timeout(struct rpc_task *task);
 static void    call_connect(struct rpc_task *task);
 static void    call_connect_status(struct rpc_task *task);
 
@@ -1908,7 +1907,8 @@ call_bind_status(struct rpc_task *task)
 
 retry_timeout:
        task->tk_status = 0;
-       task->tk_action = call_timeout;
+       task->tk_action = call_encode;
+       rpc_check_timeout(task);
 }
 
 /*
@@ -2197,10 +2197,8 @@ call_status(struct rpc_task *task)
        case -EHOSTUNREACH:
        case -ENETUNREACH:
        case -EPERM:
-               if (RPC_IS_SOFTCONN(task)) {
-                       rpc_exit(task, status);
-                       break;
-               }
+               if (RPC_IS_SOFTCONN(task))
+                       goto out_exit;
                /*
                 * Delay any retries for 3 seconds, then handle as if it
                 * were a timeout.
@@ -2208,7 +2206,6 @@ call_status(struct rpc_task *task)
                rpc_delay(task, 3*HZ);
                /* fall through */
        case -ETIMEDOUT:
-               task->tk_action = call_timeout;
                break;
        case -ECONNREFUSED:
        case -ECONNRESET:
@@ -2221,18 +2218,21 @@ call_status(struct rpc_task *task)
        case -EPIPE:
        case -ENOTCONN:
        case -EAGAIN:
-               task->tk_action = call_timeout;
                break;
        case -EIO:
                /* shutdown or soft timeout */
-               rpc_exit(task, status);
-               break;
+               goto out_exit;
        default:
                if (clnt->cl_chatty)
                        printk("%s: RPC call returned error %d\n",
                               clnt->cl_program->name, -status);
-               rpc_exit(task, status);
+               goto out_exit;
        }
+       task->tk_action = call_encode;
+       rpc_check_timeout(task);
+       return;
+out_exit:
+       rpc_exit(task, status);
 }
 
 static void
@@ -2280,19 +2280,6 @@ rpc_check_timeout(struct rpc_task *task)
 }
 
 /*
- * 6a. Handle RPC timeout
- *     We do not release the request slot, so we keep using the
- *     same XID for all retransmits.
- */
-static void
-call_timeout(struct rpc_task *task)
-{
-       task->tk_action = call_encode;
-       task->tk_status = 0;
-       rpc_check_timeout(task);
-}
-
-/*
  * 7.  Decode the RPC reply
  */
 static void
@@ -2329,16 +2316,8 @@ call_decode(struct rpc_task *task)
        WARN_ON(memcmp(&req->rq_rcv_buf, &req->rq_private_buf,
                                sizeof(req->rq_rcv_buf)) != 0);
 
-       if (req->rq_rcv_buf.len < 12) {
-               if (!RPC_IS_SOFT(task)) {
-                       task->tk_action = call_encode;
-                       goto out_retry;
-               }
-               dprintk("RPC:       %s: too small RPC reply size (%d bytes)\n",
-                               clnt->cl_program->name, task->tk_status);
-               task->tk_action = call_timeout;
+       if (req->rq_rcv_buf.len < 12)
                goto out_retry;
-       }
 
        xdr_init_decode(&xdr, &req->rq_rcv_buf,
                        req->rq_rcv_buf.head[0].iov_base, req);
@@ -2361,6 +2340,8 @@ out_retry:
                                xprt_conditional_disconnect(req->rq_xprt,
                                                            req->rq_connect_cookie);
                }
+               task->tk_action = call_encode;
+               rpc_check_timeout(task);
        }
 }