On 12/10/2018 2:26 PM, Jason Gunthorpe wrote: > On Mon, Dec 10, 2018 at 02:15:18PM -0600, Steve Wise wrote: >> On 12/10/2018 2:07 PM, Jason Gunthorpe wrote: >>> On Mon, Dec 10, 2018 at 01:47:39PM -0600, Steve Wise wrote: >>>> On 12/7/2018 1:25 PM, Jason Gunthorpe wrote: >>>>> I don't like messing with module refcount to solve a locking problem.. >>>>> Here something like this compile-tested thing.. >>>>> >>>>> Instead of implementing dellink as a function call implement it as a >>>>> flag 'ALLOW_USER_UNREGISTER'. The core code simply calls >>>>> ib_unregister_device_and_put() upon dellink. >>>>> >>>> Why don't we just mandate that if a driver uses rdma_link_ops, then it >>>> must support the core doing the ib_unregister_device_and_put() on a >>>> DELLINK nlmsg? >>> Yes, exactly. >>> >>> But conversely we must prevent dellink from running if the device was >>> not created by a compatible driver >> That'll be handled by virtue that only devices created via NEWLINK will >> have the driver's link_ops pointer cached in the ib_device. > this is fine, but do we need link_ops to be stored if we are just > calling ib_unregister_device_and_put() There is not really anyneed for > a dellink callback, right? > > Jason Correct. I get it. So we just need a flag indicating this device can be deleted via DELLINK. (just like you said earlier! :) ) It might take a while, but eventually things do sink into my noggin'. ;) Steve.