• C
    SUNRPC: Add API to acquire source address · 2e738fdc
    Chuck Lever 提交于
    NFSv4.0 clients must send endpoint information for their callback
    service to NFSv4.0 servers during their first contact with a server.
    Traditionally on Linux, user space provides the callback endpoint IP
    address via the "clientaddr=" mount option.
    
    During an NFSv4 migration event, it is possible that an FSID may be
    migrated to a destination server that is accessible via a different
    source IP address than the source server was.  The client must update
    callback endpoint information on the destination server so that it can
    maintain leases and allow delegation.
    
    Without a new "clientaddr=" option from user space, however, the
    kernel itself must construct an appropriate IP address for the
    callback update.  Provide an API in the RPC client for upper layer
    RPC consumers to acquire a source address for a remote.
    
    The mechanism used by the mount.nfs command is copied: set up a
    connected UDP socket to the designated remote, then scrape the source
    address off the socket.  We are careful to select the correct network
    namespace when setting up the temporary UDP socket.
    Signed-off-by: NChuck Lever <chuck.lever@oracle.com>
    Signed-off-by: NTrond Myklebust <Trond.Myklebust@netapp.com>
    2e738fdc
clnt.c 52.4 KB