RE: [RFC] XRC upstream merge reboot

Hefty, Sean
2011-06-22T18:19:53Z

> > After looking at the implementation more, what I didn't like about the
> reg/unreg
> > calls is that it is independent of receiving data on an SRQ. That is, a
> user can
> > receive data on an SRQ through a TGT QP before they have registered and
> after unregistering.
> That is correct, but the registering/unregistering is for expressing
> "interest" in the TGT QP, only (i.e., for
> reference counting only, as you indicated), and not at all for enabling
> the SRQ to receive traffic.
> When the reference count on the TGT QP goes to zero, it is automatically
> destroyed.
> (The TGT QP creator itself takes a reference, which is decremented when
> either the
> process exits, or it calls the deref procedure.)
>
> In my thread post
> http://lists.openfabrics.org/pipermail/general/2008-
> January/045302.html ,
> I describe the intended workflow for this interface.

I read over the threads that you referenced. I do understand what the reg/unreg calls were trying to do. In short, I agree with your original approach of letting the tgt qp hang around while the xrcd exists, and I'm not convinced what HP MPI was trying to do should drive a more complicated implementation and usage model.

For MPI, I would expect an xrcd to be associated with a single job instance. Trying to share an xrcd across jobs just seems like a bad idea. (You asked about this here http://lists.openfabrics.org/pipermail/general/2007-December/044282.html) A tgt qp should be fairly minimal in its resource allocation. Would it really be that bad to just let it hang around until the xrcd was destroyed? It makes the usage model much simpler. TGT QPs are handled using the existing API and kernel ABI.

Here are some other random thoughts. We can destroy an unassociated tgt qp on an error, but is it likely a tgt qp will get an async error? We can also destroy an unassociated tgt qp when an xrcd has no more associated srq's. We can report the creation of a tgt qp on an xrcd as an async event. Should there be a way for a user to query all tgt qp's that exist on an xrcd? Should only one process 'own' the tgt qp, or should any process that can open the xrcd be allowed to modify any tgt qp?

- Sean