Commit:     b79dc8ced1412e7056f3969bef40a30cc75ee530
Parent:     906462af4c707ba0238f3579fdb2b594c4ea29c3
Author:     Chuck Lever <[EMAIL PROTECTED]>
AuthorDate: Tue Sep 11 18:00:52 2007 -0400
Committer:  Trond Myklebust <[EMAIL PROTECTED]>
CommitDate: Tue Oct 9 17:16:58 2007 -0400

    SUNRPC: RPC bind failures should be permanent for NULL requests
    The purpose of an RPC ping (a NULL request) is to determine whether the
    remote end is operating and supports the RPC program and version of the
    If we do an RPC bind and the remote's rpcbind service says "this
    program or service isn't supported" then we have our answer already,
    and we should give up immediately.
    This is good for the kernel mount client, as it will cause the request
    to fail, and then allow an immediate retry with different options.
    Signed-off-by: Chuck Lever <[EMAIL PROTECTED]>
    Signed-off-by: Trond Myklebust <[EMAIL PROTECTED]>
 net/sunrpc/clnt.c |    5 +++++
 1 files changed, 5 insertions(+), 0 deletions(-)

diff --git a/net/sunrpc/clnt.c b/net/sunrpc/clnt.c
index 04f6e15..b19bacf 100644
--- a/net/sunrpc/clnt.c
+++ b/net/sunrpc/clnt.c
@@ -959,6 +959,11 @@ call_bind_status(struct rpc_task *task)
        case -EACCES:
                dprintk("RPC: %5u remote rpcbind: RPC program/version "
                                "unavailable\n", task->tk_pid);
+               /* fail immediately if this is an RPC ping */
+               if (task->tk_msg.rpc_proc->p_proc == 0) {
+                       status = -EOPNOTSUPP;
+                       break;
+               }
                rpc_delay(task, 3*HZ);
                goto retry_timeout;
        case -ETIMEDOUT:
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at

Reply via email to