Sean Hefty wrote:
+static void cma_ha_work_handler(struct work_struct *work)
+{
+       struct rdma_id_private *id_priv;
+
+       id_priv = container_of(work, struct rdma_id_private, ha_work);
+       rdma_disconnect(&id_priv->id);
+}

This will race with other user calls.  I've found it fairly difficult for the
rdma_cm to call back into its own API and avoid racing with the user trying to
destroy the cm_id.  None of the APIs are coded to allow calling them
simultaneously with destroy.

A better solution for this may be for the rdma_cm to simply notify the user that
the IP mapping for their RDMA device has changed.  The user can then disconnect,
with the appropriate synchronization, if they want their RDMA connection to
follow the IP address.  (If I understood correctly, the reason for this is to
allow failing back to a repaired port.)


Yes.  Move this logic to the ULP, not in the rdma-cm...


_______________________________________________
general mailing list
[email protected]
http://lists.openfabrics.org/cgi-bin/mailman/listinfo/general

To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general

Reply via email to