]> 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:34:29 +0000 (15:34 -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 c21e63027fc0ead921681d0493eed29ab849cde1..2b71d39fe8c013c40a2419d4adcfbc7de286cc11 100644 (file)
@@ -7823,10 +7823,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);
 }