]> Git Repo - linux.git/commitdiff
Revert "NFSv4: Retry LOCK on OLD_STATEID during delegation return"
authorBenjamin Coddington <[email protected]>
Tue, 27 Jun 2023 18:31:49 +0000 (14:31 -0400)
committerTrond Myklebust <[email protected]>
Thu, 29 Jun 2023 18:25:35 +0000 (14:25 -0400)
Olga Kornievskaia reports that this patch breaks NFSv4.0 state recovery.
It also introduces additional complexity in the error paths for cases not
related to the original problem.  Let's revert it for now, and address the
original problem in another manner.

This reverts commit f5ea16137a3fa2858620dc9084466491c128535f.

Fixes: f5ea16137a3f ("NFSv4: Retry LOCK on OLD_STATEID during delegation return")
Reported-by: Kornievskaia, Olga <[email protected]>
Signed-off-by: Benjamin Coddington <[email protected]>
Signed-off-by: Trond Myklebust <[email protected]>
fs/nfs/nfs4proc.c

index 212971ddb14919eb0b223262225c95bae5c3cc7b..e1a886b58354cf905018beb46beb89927dd6dbb3 100644 (file)
@@ -7160,7 +7160,6 @@ static void nfs4_lock_done(struct rpc_task *task, void *calldata)
 {
        struct nfs4_lockdata *data = calldata;
        struct nfs4_lock_state *lsp = data->lsp;
-       struct nfs_server *server = NFS_SERVER(d_inode(data->ctx->dentry));
 
        if (!nfs4_sequence_done(task, &data->res.seq_res))
                return;
@@ -7168,7 +7167,8 @@ static void nfs4_lock_done(struct rpc_task *task, void *calldata)
        data->rpc_status = task->tk_status;
        switch (task->tk_status) {
        case 0:
-               renew_lease(server, data->timestamp);
+               renew_lease(NFS_SERVER(d_inode(data->ctx->dentry)),
+                               data->timestamp);
                if (data->arg.new_lock && !data->cancelled) {
                        data->fl.fl_flags &= ~(FL_SLEEP | FL_ACCESS);
                        if (locks_lock_inode_wait(lsp->ls_state->inode, &data->fl) < 0)
@@ -7189,8 +7189,6 @@ static void nfs4_lock_done(struct rpc_task *task, void *calldata)
                        if (!nfs4_stateid_match(&data->arg.open_stateid,
                                                &lsp->ls_state->open_stateid))
                                goto out_restart;
-                       else if (nfs4_async_handle_error(task, server, lsp->ls_state, NULL) == -EAGAIN)
-                               goto out_restart;
                } else if (!nfs4_stateid_match(&data->arg.lock_stateid,
                                                &lsp->ls_stateid))
                                goto out_restart;
This page took 0.069056 seconds and 4 git commands to generate.