NFSv4: Map NFS4ERR_SHARE_DENIED into an EACCES error instead of EIO
authorTrond Myklebust <Trond.Myklebust@netapp.com>
Mon, 28 May 2012 15:36:28 +0000 (11:36 -0400)
committerTrond Myklebust <Trond.Myklebust@netapp.com>
Mon, 28 May 2012 21:21:48 +0000 (17:21 -0400)
If a file OPEN is denied due to a share lock, the resulting
NFS4ERR_SHARE_DENIED is currently mapped to the default EIO.
This patch adds a more appropriate mapping, and brings Linux
into line with what Solaris 10 does.

See https://bugzilla.kernel.org/show_bug.cgi?id=43286

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Cc: stable@vger.kernel.org
fs/nfs/nfs4proc.c

index af2db2c49c5fb24367e86e272a4fb32124e71d1e..42d9e9ca7d2fbe22af780544eb86b4d40ce3f31a 100644 (file)
@@ -103,6 +103,8 @@ static int nfs4_map_errors(int err)
        case -NFS4ERR_BADOWNER:
        case -NFS4ERR_BADNAME:
                return -EINVAL;
+       case -NFS4ERR_SHARE_DENIED:
+               return -EACCES;
        default:
                dprintk("%s could not handle NFSv4 error %d\n",
                                __func__, -err);