From: Andreas Gruenbacher Signed-off-by: Andrew Morton --- 25-akpm/fs/nfs/nfs3proc.c | 4 ++-- 25-akpm/net/sunrpc/clnt.c | 14 ++++++-------- 2 files changed, 8 insertions(+), 10 deletions(-) diff -puN fs/nfs/nfs3proc.c~nfsacl-return-enosys-for-rpc-programs-that-are-unavailable-fix fs/nfs/nfs3proc.c --- 25/fs/nfs/nfs3proc.c~nfsacl-return-enosys-for-rpc-programs-that-are-unavailable-fix 2005-02-19 01:47:23.000000000 -0800 +++ 25-akpm/fs/nfs/nfs3proc.c 2005-02-19 01:47:23.000000000 -0800 @@ -764,7 +764,7 @@ nfs3_proc_getacl(struct inode *inode, in __free_page(args.pages[count]); if (status) { - if (status == -ENOSYS) { + if (status == -ENOSYS || status == -EOPNOTSUPP) { dprintk("NFS_ACL extension not supported; disabling\n"); server->flags &= ~NFSACL; status = -EOPNOTSUPP; @@ -850,7 +850,7 @@ nfs3_proc_setacls(struct inode *inode, s __free_page(args.pages[count]); if (status) { - if (status == -ENOSYS) { + if (status == -ENOSYS || status == -EOPNOTSUPP) { dprintk("NFS_ACL SETACL RPC not supported" "(will not retry)\n"); server->flags &= ~NFSACL; diff -puN net/sunrpc/clnt.c~nfsacl-return-enosys-for-rpc-programs-that-are-unavailable-fix net/sunrpc/clnt.c --- 25/net/sunrpc/clnt.c~nfsacl-return-enosys-for-rpc-programs-that-are-unavailable-fix 2005-02-19 01:47:23.000000000 -0800 +++ 25-akpm/net/sunrpc/clnt.c 2005-02-19 02:16:56.000000000 -0800 @@ -1011,11 +1011,11 @@ call_verify(struct rpc_task *task) break; case RPC_MISMATCH: printk(KERN_WARNING "%s: RPC call version mismatch!\n", __FUNCTION__); - error = -ENOSYS; + error = -EIO; goto out_err; default: printk(KERN_WARNING "%s: RPC call rejected, unknown error: %x\n", __FUNCTION__, n); - error = -ENOSYS; + error = -EIO; goto out_err; } if (--len < 0) @@ -1066,11 +1066,9 @@ call_verify(struct rpc_task *task) case RPC_SUCCESS: return p; case RPC_PROG_UNAVAIL: - if (task->tk_client->cl_prog != NFSACL_PROGRAM) { - printk(KERN_WARNING "RPC: call_verify: program %u is unsupported by server %s\n", - (unsigned int)task->tk_client->cl_prog, - task->tk_client->cl_server); - } + dprintk(KERN_WARNING "RPC: call_verify: program %u is unsupported by server %s\n", + (unsigned int)task->tk_client->cl_prog, + task->tk_client->cl_server); error = -ENOSYS; goto out_err; case RPC_PROG_MISMATCH: @@ -1086,7 +1084,7 @@ call_verify(struct rpc_task *task) task->tk_client->cl_prog, task->tk_client->cl_vers, task->tk_client->cl_server); - error = -ENOSYS; + error = -EOPNOTSUPP; goto out_err; case RPC_GARBAGE_ARGS: dprintk("RPC: %4d %s: server saw garbage\n", task->tk_pid, __FUNCTION__); _