[ofa-general] rping / librdmacm deadlock question
Steve Wise
swise at opengridcomputing.com
Wed Jul 18 12:36:10 PDT 2007
Sean Hefty wrote:
>>> I wonder if it would be better if the iWarp CM acquired/released the
>>> QP reference on a per call basis, rather than holding a reference
>>> throughout the entire connection.
>>>
>>
>> The design assume the iwcm can hold this reference and cache the qp
>> ptr. In the iwarp design, the cm_id (connection) and qp are tighly
>> bound once the connection is transitioned into rdma mode. This is
>> different than infiniband.
>
> I don't know if this tight binding is necessary in the implementation.
> The cm_id could store the qpn, rather than a pointer to the structure.
> When necessary, the qp pointer could be acquired using the qpn, then
> released at the end of the function call. I don't think we need to hold
> the reference on the qp structure for the entire connection.
>
> I'm just tossing this out as an idea. I'm not familiar enough with the
> details to claim that it's a better approach over what's currently done.
Maybe, but I'm not gonna change this code now. It was too painful to
get working... ;-)
>
>> I still don't see the deadlock?
>
> What happens if a user calls destroy qp immediately after connecting it?
>
>
See my reply to clark. The iwarp provider _must_ disassociate the
endpoint/cm_id from the qp in destroy_qp()... This involves aborting or
closing the connection and passing a CLOSE event to the iwcm which
removes its reference.
Steve.
More information about the general
mailing list