Skip to content

Commit cdf4770

Browse files
Andreas GruenbacherTrond Myklebust
authored andcommitted
[PATCH] RPC: Return -EPFNOSUPPORT for RPC programs that are unavailable
Signed-off-by: Andreas Gruenbacher <[email protected]> Signed-off-by: Olaf Kirch <[email protected]> Signed-off-by: Trond Myklebust <[email protected]>
1 parent 6a19275 commit cdf4770

File tree

1 file changed

+14
-10
lines changed

1 file changed

+14
-10
lines changed

net/sunrpc/clnt.c

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1021,10 +1021,11 @@ call_verify(struct rpc_task *task)
10211021
case RPC_AUTH_ERROR:
10221022
break;
10231023
case RPC_MISMATCH:
1024-
printk(KERN_WARNING "%s: RPC call version mismatch!\n", __FUNCTION__);
1025-
goto out_eio;
1024+
dprintk("%s: RPC call version mismatch!\n", __FUNCTION__);
1025+
error = -EPROTONOSUPPORT;
1026+
goto out_err;
10261027
default:
1027-
printk(KERN_WARNING "%s: RPC call rejected, unknown error: %x\n", __FUNCTION__, n);
1028+
dprintk("%s: RPC call rejected, unknown error: %x\n", __FUNCTION__, n);
10281029
goto out_eio;
10291030
}
10301031
if (--len < 0)
@@ -1075,23 +1076,26 @@ call_verify(struct rpc_task *task)
10751076
case RPC_SUCCESS:
10761077
return p;
10771078
case RPC_PROG_UNAVAIL:
1078-
printk(KERN_WARNING "RPC: call_verify: program %u is unsupported by server %s\n",
1079+
dprintk("RPC: call_verify: program %u is unsupported by server %s\n",
10791080
(unsigned int)task->tk_client->cl_prog,
10801081
task->tk_client->cl_server);
1081-
goto out_eio;
1082+
error = -EPFNOSUPPORT;
1083+
goto out_err;
10821084
case RPC_PROG_MISMATCH:
1083-
printk(KERN_WARNING "RPC: call_verify: program %u, version %u unsupported by server %s\n",
1085+
dprintk("RPC: call_verify: program %u, version %u unsupported by server %s\n",
10841086
(unsigned int)task->tk_client->cl_prog,
10851087
(unsigned int)task->tk_client->cl_vers,
10861088
task->tk_client->cl_server);
1087-
goto out_eio;
1089+
error = -EPROTONOSUPPORT;
1090+
goto out_err;
10881091
case RPC_PROC_UNAVAIL:
1089-
printk(KERN_WARNING "RPC: call_verify: proc %p unsupported by program %u, version %u on server %s\n",
1092+
dprintk("RPC: call_verify: proc %p unsupported by program %u, version %u on server %s\n",
10901093
task->tk_msg.rpc_proc,
10911094
task->tk_client->cl_prog,
10921095
task->tk_client->cl_vers,
10931096
task->tk_client->cl_server);
1094-
goto out_eio;
1097+
error = -EOPNOTSUPP;
1098+
goto out_err;
10951099
case RPC_GARBAGE_ARGS:
10961100
dprintk("RPC: %4d %s: server saw garbage\n", task->tk_pid, __FUNCTION__);
10971101
break; /* retry */
@@ -1104,7 +1108,7 @@ call_verify(struct rpc_task *task)
11041108
task->tk_client->cl_stats->rpcgarbage++;
11051109
if (task->tk_garb_retry) {
11061110
task->tk_garb_retry--;
1107-
dprintk(KERN_WARNING "RPC %s: retrying %4d\n", __FUNCTION__, task->tk_pid);
1111+
dprintk("RPC %s: retrying %4d\n", __FUNCTION__, task->tk_pid);
11081112
task->tk_action = call_bind;
11091113
return NULL;
11101114
}

0 commit comments

Comments
 (0)