Re: [PATCH] nfs4: don't map EACCESS and EPERM to EIO

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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






[Index of Archives]     [Linux Filesystem Development]     [Linux USB Development]     [Linux Media Development]     [Video for Linux]     [Linux NILFS]     [Linux Audio Users]     [Yosemite Info]     [Linux SCSI]

  Powered by Linux