OSDN Git Service

NFS: Re-use exit code in nfs4_async_handle_error()
authorChuck Lever <chuck.lever@oracle.com>
Thu, 17 Oct 2013 18:13:07 +0000 (14:13 -0400)
committerTrond Myklebust <Trond.Myklebust@netapp.com>
Mon, 28 Oct 2013 19:24:55 +0000 (15:24 -0400)
Clean up.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
fs/nfs/nfs4proc.c

index c71c16e..2614b46 100644 (file)
@@ -4750,19 +4750,15 @@ nfs4_async_handle_error(struct rpc_task *task, const struct nfs_server *server,
                        dprintk("%s ERROR %d, Reset session\n", __func__,
                                task->tk_status);
                        nfs4_schedule_session_recovery(clp->cl_session, task->tk_status);
-                       task->tk_status = 0;
-                       return -EAGAIN;
+                       goto restart_call;
 #endif /* CONFIG_NFS_V4_1 */
                case -NFS4ERR_DELAY:
                        nfs_inc_server_stats(server, NFSIOS_DELAY);
                case -NFS4ERR_GRACE:
                        rpc_delay(task, NFS4_POLL_RETRY_MAX);
-                       task->tk_status = 0;
-                       return -EAGAIN;
                case -NFS4ERR_RETRY_UNCACHED_REP:
                case -NFS4ERR_OLD_STATEID:
-                       task->tk_status = 0;
-                       return -EAGAIN;
+                       goto restart_call;
        }
        task->tk_status = nfs4_map_errors(task->tk_status);
        return 0;
@@ -4773,6 +4769,7 @@ wait_on_recovery:
        rpc_sleep_on(&clp->cl_rpcwaitq, task, NULL);
        if (test_bit(NFS4CLNT_MANAGER_RUNNING, &clp->cl_state) == 0)
                rpc_wake_up_queued_task(&clp->cl_rpcwaitq, task);
+restart_call:
        task->tk_status = 0;
        return -EAGAIN;
 }