NFSv4: setlease should return EAGAIN if locks are not available
authorTrond Myklebust <trond.myklebust@hammerspace.com>
Fri, 25 Jun 2021 19:08:39 +0000 (15:08 -0400)
committerTrond Myklebust <trond.myklebust@hammerspace.com>
Tue, 29 Jun 2021 17:13:31 +0000 (13:13 -0400)
Instead of returning ENOLCK when we can't hand out a lease, we should be
returning EAGAIN.

Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
fs/nfs/nfs4proc.c

index 35df44e..e4efb7b 100644 (file)
@@ -7452,13 +7452,13 @@ static int nfs4_add_lease(struct file *file, long arg, struct file_lock **lease,
 
        /* No delegation, no lease */
        if (!nfs4_have_delegation(inode, type))
-               return -ENOLCK;
+               return -EAGAIN;
        ret = generic_setlease(file, arg, lease, priv);
        if (ret || nfs4_have_delegation(inode, type))
                return ret;
        /* We raced with a delegation return */
        nfs4_delete_lease(file, priv);
-       return -ENOLCK;
+       return -EAGAIN;
 }
 
 int nfs4_proc_setlease(struct file *file, long arg, struct file_lock **lease,