> 1) rdma_get_request passes event_id and (listen_id)id_priv->qp_init_attr to
>    rdma_create_qp()
> 
> 2) rdma_create_qp passes qp_init_attr to ucma_create_cqs()
> 
> 3) ucma_create_cqs stores a pointer to the created CQs in attr->recv_cq /
>    send_cq, which is the attr of the listen_id
> 
> 4) serving the second client, ucma_create_cqs checks attr->recv_cq and does
>    not create a pair of CQs
> 
> Feels a little odd to me that the listen_id takes a pointer to the CQs
> created
> for the client_id in its qp_init_attr.

This is a bug in rdma_create_qp, rdma_get_request, or both.

rdma_create_qp will modify the qp_init_attr parameter, but I need to think 
whether it should modify the cq pointers.  The underlying ibv_create_qp call 
does not, but does modify other values, so I think this call may be okay.

Because rdma_create_qp modifies the qp_init_attr parameters, rdma_get_request 
ends up modifying the attributes stored with the listen request.  This is 
definitely an error, and I'll need to come up with a fix for this.

- Sean
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to