[openib-general] Re: RFC: cma: need rdma_unbind

Michael S. Tsirkin mst at mellanox.co.il
Mon Apr 24 14:19:11 PDT 2006


Quoting r. Tom Tucker <tom at opengridcomputing.com>:
> Subject: Re: RFC: cma: need rdma_unbind
> 
> On Mon, 2006-04-24 at 11:15 -0700, Sean Hefty wrote:
> > Michael S. Tsirkin wrote:
> > > Sean, it seems that a rdma_unbind API is necessary for SDP SO_REUSEADDR support.
> > > This should only remove association between the port and the id, without
> > > affecting the CM state.
> > > 
> > > Reason: when SO_REUSEADDR is set, the port becomes usable immediately
> > > after close call, but the QP must not be closed immediately -
> > > rather its closed after graceful close or after timeout.
> > > 
> > > Thus I can not destroy the id, but the association with
> > > port needs to be cancelled.
> > 
> > I'm in the process of adding rdma_set_option and rdma_get_option calls.  If 
> > SO_REUSEADDR support were added through these calls, can we come up with a 
> > solution that doesn't require adding an rdma_unbind call?
> 
> There is no need for an unbind call -- the sockets code, for example,
> doesn't work this way. Instead, it looks at a 'reuse' flag and decides
> whether to allow a subsequent bind or use-port request based on the
> value.

I just tested this and this does not seem to be how it works:
if the socket is in TIME_WAIT state, SO_REUSEADDR let's you bind another
one to this port.
If the socket is not in TIME_WAIT state, you still get EADDRINUSE.

socketfaq seems to agree
http://www.unixguide.net/network/socketfaq/4.5.shtml

And CMA does not know about socket state - that's managed by ULP.



-- 
MST



More information about the general mailing list