]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
NFSv4: handle ERR_GRACE on delegation recalls
authorOlga Kornievskaia <okorniev@redhat.com>
Mon, 11 Aug 2025 18:18:48 +0000 (14:18 -0400)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 13 Nov 2025 20:37:30 +0000 (15:37 -0500)
[ Upstream commit be390f95242785adbf37d7b8a5101dd2f2ba891b ]

RFC7530 states that clients should be prepared for the return of
NFS4ERR_GRACE errors for non-reclaim lock and I/O requests.

Signed-off-by: Olga Kornievskaia <okorniev@redhat.com>
Signed-off-by: Anna Schumaker <anna.schumaker@oracle.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
fs/nfs/nfs4proc.c

index 611e6283c194ff50a3fe08236c3cd09c9a21c96d..4de3e4bd724b7ee8d5eb0b862706b48f67141ff6 100644 (file)
@@ -7872,10 +7872,10 @@ int nfs4_lock_delegation_recall(struct file_lock *fl, struct nfs4_state *state,
                return err;
        do {
                err = _nfs4_do_setlk(state, F_SETLK, fl, NFS_LOCK_NEW);
-               if (err != -NFS4ERR_DELAY)
+               if (err != -NFS4ERR_DELAY && err != -NFS4ERR_GRACE)
                        break;
                ssleep(1);
-       } while (err == -NFS4ERR_DELAY);
+       } while (err == -NFS4ERR_DELAY || err == -NFSERR_GRACE);
        return nfs4_handle_delegation_recall_error(server, state, stateid, fl, err);
 }