We can't wait forever, even if the state is always delayed. Signed-off-by: Wenle Chen <chenwenle@xxxxxxxxxx> --- fs/nfs/nfs4proc.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c index f6b5dc792b33..bb2316bf13f6 100644 --- a/fs/nfs/nfs4proc.c +++ b/fs/nfs/nfs4proc.c @@ -7390,15 +7390,17 @@ int nfs4_lock_delegation_recall(struct file_lock *fl, struct nfs4_state *state, { struct nfs_server *server = NFS_SERVER(state->inode); int err; + int retry = 3; err = nfs4_set_lock_state(state, fl); if (err != 0) return err; do { err = _nfs4_do_setlk(state, F_SETLK, fl, NFS_LOCK_NEW); - if (err != -NFS4ERR_DELAY) + if (err != -NFS4ERR_DELAY || retry == 0) break; ssleep(1); + --retry; } while (1); return nfs4_handle_delegation_recall_error(server, state, stateid, fl, err); } -- 2.29.1