• Chuck Lever's avatar
    SUNRPC: Use soft connects for autobinding over TCP · 012da158
    Chuck Lever authored
    Autobinding is handled by the rpciod process, not in user processes
    that are generating regular RPC requests.  Thus autobinding is usually
    not affected by signals targetting user processes, such as KILL or
    timer expiration events.
    
    In addition, an RPC request generated by a user process that has
    RPC_TASK_SOFTCONN set and needs to perform an autobind will hang if
    the remote rpcbind service is not available.
    
    For rpcbind queries on connection-oriented transports, let's use the
    new soft connect semantic to return control to the user's process
    quickly, if the kernel's rpcbind client can't connect to the remote
    rpcbind service.
    
    Logic is introduced in call_bind_status() to handle connection errors
    that occurred during an asynchronous rpcbind query.  The logic
    abandons the rpcbind query if the RPC request has SOFTCONN set, and
    retries after a few seconds in the normal case.
    Signed-off-by: default avatarChuck Lever <chuck.lever@oracle.com>
    Signed-off-by: default avatarTrond Myklebust <Trond.Myklebust@netapp.com>
    012da158
clnt.c 42.5 KB