]> 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>
Wed, 3 Dec 2025 11:45:13 +0000 (12:45 +0100)
[ 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 44770bb9017d5c410355de4615b62fdafbaea153..7a4d7158c55f21a76719cb77adba1ebbad87b5b4 100644 (file)
@@ -7315,10 +7315,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);
 }