NFSv4: Propagate the error NFS4ERR_BADOWNER to nfs4_do_setattr
authorTrond Myklebust <Trond.Myklebust@netapp.com>
Tue, 22 Feb 2011 23:44:31 +0000 (15:44 -0800)
committerTrond Myklebust <Trond.Myklebust@netapp.com>
Fri, 11 Mar 2011 20:39:27 +0000 (15:39 -0500)
This will be required in order to switch uid/gid mapping back on if the
admin has tried to disable it.

Note that we also propagate NFS4ERR_BADNAME at the same time, in order to
work around a Linux server bug.

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
fs/nfs/nfs4proc.c
fs/nfs/nfs4xdr.c

index 7b4b9f3..8f3ada0 100644 (file)
@@ -85,6 +85,9 @@ static int nfs4_map_errors(int err)
        switch (err) {
        case -NFS4ERR_RESOURCE:
                return -EREMOTEIO;
+       case -NFS4ERR_BADOWNER:
+       case -NFS4ERR_BADNAME:
+               return -EINVAL;
        default:
                dprintk("%s could not handle NFSv4 error %d\n",
                                __func__, -err);
index 686c21d..0cf560f 100644 (file)
@@ -6171,8 +6171,6 @@ static struct {
        { NFS4ERR_DQUOT,        -EDQUOT         },
        { NFS4ERR_STALE,        -ESTALE         },
        { NFS4ERR_BADHANDLE,    -EBADHANDLE     },
-       { NFS4ERR_BADOWNER,     -EINVAL         },
-       { NFS4ERR_BADNAME,      -EINVAL         },
        { NFS4ERR_BAD_COOKIE,   -EBADCOOKIE     },
        { NFS4ERR_NOTSUPP,      -ENOTSUPP       },
        { NFS4ERR_TOOSMALL,     -ETOOSMALL      },