[ofa-general] hotplug event handle question

Michael S. Tsirkin mst at dev.mellanox.co.il
Wed Apr 25 23:14:11 PDT 2007


Quoting Sean Hefty <sean.hefty at intel.com>:
Subject: RE: [ofa-general] hotplug event handle question

> >I think the problem is that cma_remove_id_dev overrides the current state,
> >losing state information in the process. Why do we need CMA_DEVICE_REMOVAL
> >at all? Everything seems to work fine just by forwarding
> >RDMA_CM_EVENT_DEVICE_REMOVAL
> >to user, without touching state.
> 
> I need to read back over the code.  The problem is that device removal can come
> at anytime.  The user could have called rdma_destroy_id, be about to call it, or
> be destroying the id by returning a non-zero value from a callback.  We need to
> synchronize with all cases, and in the later case, we cannot perform the
> callback to notify the user of the device removal.  Similarly, if the user
> destroys the id from a device removal event callback, then callbacks for others
> event should not be called.
> 
> If we can do this by removing the device removal state, that would seem to be
> the simplest approach, but I need to verify that we can cover all corner cases.

My point is that we shouldn't be losing state just because we
got hotplug event - device is not yet going away until we return
from the remove event callback.

...


> At the very least we need to repeat the check:
> 
> 	if (!cma_comp(id_priv, CMA_DESTROYING))
> 		return 0;
> 
> here to avoid calling the user after they've tried to destroy their id from
> another callback.  See comment above.

OK. Would that be enough?

-- 
MST



More information about the general mailing list