NFSv4: Convert DELEGRETURN to use nfs4_handle_exception()
authorTrond Myklebust <trond.myklebust@primarydata.com>
Tue, 7 Nov 2017 16:02:32 +0000 (11:02 -0500)
committerTrond Myklebust <trond.myklebust@primarydata.com>
Mon, 15 Jan 2018 04:06:29 +0000 (23:06 -0500)
Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
fs/nfs/nfs4proc.c

index ea2b7e8..b704e08 100644 (file)
@@ -5764,6 +5764,10 @@ struct nfs4_delegreturndata {
 static void nfs4_delegreturn_done(struct rpc_task *task, void *calldata)
 {
        struct nfs4_delegreturndata *data = calldata;
+       struct nfs4_exception exception = {
+               .inode = data->inode,
+               .stateid = &data->stateid,
+       };
 
        if (!nfs4_sequence_done(task, &data->res.seq_res))
                return;
@@ -5825,10 +5829,11 @@ static void nfs4_delegreturn_done(struct rpc_task *task, void *calldata)
                }
                /* Fallthrough */
        default:
-               if (nfs4_async_handle_error(task, data->res.server,
-                                           NULL, NULL) == -EAGAIN) {
+               task->tk_status = nfs4_async_handle_exception(task,
+                               data->res.server, task->tk_status,
+                               &exception);
+               if (exception.retry)
                        goto out_restart;
-               }
        }
        data->rpc_status = task->tk_status;
        return;