Skip to content
  • Hefty, Sean's avatar
    RDMA/cma: Add an ID_REUSEADDR option · a9bb7912
    Hefty, Sean authored
    
    
    Lustre requires that clients bind to a privileged port number before
    connecting to a remote server.  On larger clusters (typically more
    than about 1000 nodes), the number of privileged ports is exhausted,
    resulting in lustre being unusable.
    
    To handle this, we add support for reusable addresses to the rdma_cm.
    This mimics the behavior of the socket option SO_REUSEADDR.  A user
    may set an rdma_cm_id to reuse an address before calling
    rdma_bind_addr() (explicitly or implicitly).  If set, other
    rdma_cm_id's may be bound to the same address, provided that they all
    have reuse enabled, and there are no active listens.
    
    If rdma_listen() is called on an rdma_cm_id that has reuse enabled, it
    will only succeed if there are no other id's bound to that same
    address.  The reuse option is exported to user space.  The behavior of
    the kernel reuse implementation was verified against that given by
    sockets.
    
    This patch is derived from a path by Ira Weiny <weiny2@llnl.gov>
    
    Signed-off-by: default avatarSean Hefty <sean.hefty@intel.com>
    Signed-off-by: default avatarRoland Dreier <roland@purestorage.com>
    a9bb7912