From: Trond Myklebust Date: Fri, 9 Aug 2019 19:03:11 +0000 (-0400) Subject: NFSv4: Fix return values for nfs4_file_open() X-Git-Tag: v5.15~5646^2~16 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=90cf500e338ab3f3c0f126ba37e36fb6a9058441;p=platform%2Fkernel%2Flinux-starfive.git NFSv4: Fix return values for nfs4_file_open() Currently, we are translating RPC level errors such as timeouts, as well as interrupts etc into EOPENSTALE, which forces a single replay of the open attempt. What we actually want to do is force the replay only in the cases where the returned error indicates that the file may have changed on the server. So the fix is to spell out the exact set of errors where we want to return EOPENSTALE. Signed-off-by: Trond Myklebust --- diff --git a/fs/nfs/nfs4file.c b/fs/nfs/nfs4file.c index 96db471..339663d 100644 --- a/fs/nfs/nfs4file.c +++ b/fs/nfs/nfs4file.c @@ -73,13 +73,13 @@ nfs4_file_open(struct inode *inode, struct file *filp) if (IS_ERR(inode)) { err = PTR_ERR(inode); switch (err) { - case -EPERM: - case -EACCES: - case -EDQUOT: - case -ENOSPC: - case -EROFS: - goto out_put_ctx; default: + goto out_put_ctx; + case -ENOENT: + case -ESTALE: + case -EISDIR: + case -ENOTDIR: + case -ELOOP: goto out_drop; } }