[openib-general] RE: CMA deadlock

Sean Hefty sean.hefty at intel.com
Mon Apr 3 10:17:09 PDT 2006


>  A ULP requests address resolution; on success requests route resolution;
>  route resolution succeeds; inside the callback ULP requests rdma_connect.
>  Now, a failure (e.g. out of memory) occurs at ULP level and so it decides to
>  destroy the ID. To this end it returns failure code from the route callback.

I didn't consider this possibility.  The only solution I can see at the moment
is to schedule route resolution to a separate thread, as you suggested.

>And it seems that, if the user callback returns failure, the CMA actually calls
>rdma_destroy_id which in turn may call ib_destroy_cm_id from inside the CM
>callback. I think this might deadlock in a similiar way.  Again, bouncing the
>CM
>event to the rdma WQ will solve this I think.

This should be handled by the code.  See the comment near the bottom of the
cma_ib_handler() routine.

- Sean



More information about the general mailing list