Here's one bugfix which might help to explain the GRANTED failure. The
bug has been there all along (so I'll probably want to send this to
Marcelo too).
The code in question in supposed to ensure that we don't wait on a
reply if the RPC call doesn't expect one. However, if the socket
transmission failed for some reason, we do actually want to loop and
try again...
This bug will hit the RPC call in nlmsvc_grant_blocked().
if (task->tk_status < 0)
return;
xprt_transmit(task);
- if (!rpcproc_decode(clnt, task->tk_msg.rpc_proc)) {
+ if (!rpcproc_decode(clnt, task->tk_msg.rpc_proc) && task->tk_status >= 0) {
task->tk_action = NULL;
rpc_wake_up_task(task);
}