Hi Tigran, On Thu, 2023-06-08 at 16:49 +0200, Tigran Mkrtchyan wrote: > the nfs4_map_errors function converts NFS specific errors to userland > errors. However, it ignores NFS4ERR_PERM and EPERM, which then get > mapped to EIO. > > Signed-off-by: Tigran Mkrtchyan <tigran.mkrtchyan@xxxxxxx> > --- > fs/nfs/nfs4proc.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c > index d3665390c4cb..795205fe4f30 100644 > --- a/fs/nfs/nfs4proc.c > +++ b/fs/nfs/nfs4proc.c > @@ -171,12 +171,14 @@ static int nfs4_map_errors(int err) > case -NFS4ERR_LAYOUTTRYLATER: > case -NFS4ERR_RECALLCONFLICT: > return -EREMOTEIO; > + case -NFS4ERR_PERM: > case -NFS4ERR_WRONGSEC: > case -NFS4ERR_WRONG_CRED: > return -EPERM; > case -NFS4ERR_BADOWNER: > case -NFS4ERR_BADNAME: > return -EINVAL; > + case -NFS4ERR_ACCESS: > case -NFS4ERR_SHARE_DENIED: > return -EACCES; > case -NFS4ERR_MINOR_VERS_MISMATCH: Hmm... Aren't both these cases covered by the exception at the top of the function? static int nfs4_map_errors(int err) { if (err >= -1000) return err; As I read it, that should mean that err = -NFS4ERR_ACCESS (= -13) and err = -NFS4ERR_PERM (= -1) will get returned verbatim. Are you seeing these NFS4ERR_ACCESS and NFS4ERR_PERM cases hitting the default: dprintk() when you turn it on? -- Trond Myklebust Linux NFS client maintainer, Hammerspace trond.myklebust@xxxxxxxxxxxxxxx