diff options
author | Trond Myklebust <trond.myklebust@primarydata.com> | 2017-11-07 17:14:49 +0100 |
---|---|---|
committer | Trond Myklebust <trond.myklebust@primarydata.com> | 2018-01-15 05:06:29 +0100 |
commit | 82571552a034f7531b0c8e76c1fd593c8755c519 (patch) | |
tree | 1cb5fb4fa2c38fa91e5d00aa2d029e6c7102e8aa /fs/nfs | |
parent | NFSv4: Convert DELEGRETURN to use nfs4_handle_exception() (diff) | |
download | linux-82571552a034f7531b0c8e76c1fd593c8755c519.tar.xz linux-82571552a034f7531b0c8e76c1fd593c8755c519.zip |
NFSv4: Convert LOCKU to use nfs4_async_handle_exception()
Convert CLOSE so that it specifies the correct stateid and
inode for the error handling.
Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
Diffstat (limited to 'fs/nfs')
-rw-r--r-- | fs/nfs/nfs4proc.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c index b704e08b390c..b927fda32e74 100644 --- a/fs/nfs/nfs4proc.c +++ b/fs/nfs/nfs4proc.c @@ -6071,6 +6071,10 @@ static void nfs4_locku_release_calldata(void *data) static void nfs4_locku_done(struct rpc_task *task, void *data) { struct nfs4_unlockdata *calldata = data; + struct nfs4_exception exception = { + .inode = calldata->lsp->ls_state->inode, + .stateid = &calldata->arg.stateid, + }; if (!nfs4_sequence_done(task, &calldata->res.seq_res)) return; @@ -6094,8 +6098,10 @@ static void nfs4_locku_done(struct rpc_task *task, void *data) rpc_restart_call_prepare(task); break; default: - if (nfs4_async_handle_error(task, calldata->server, - NULL, NULL) == -EAGAIN) + task->tk_status = nfs4_async_handle_exception(task, + calldata->server, task->tk_status, + &exception); + if (exception.retry) rpc_restart_call_prepare(task); } nfs_release_seqid(calldata->arg.seqid); |