> On 08 Jun 2016, at 13:47, Paul Goyette <[email protected]> wrote:
> 
> On Wed, 8 Jun 2016, Paul Goyette wrote:
> 
>> On Tue, 7 Jun 2016, Taylor R Campbell wrote:
>> 
>>>  Date: Tue, 7 Jun 2016 18:28:11 +0800 (PHT)
>>>  From: Paul Goyette <[email protected]>
>>> 
>>>  Can anyone suggest a reliable way to ensure that a device-driver module
>>>  can be _really_ safely detached?
>>> General approach:
>>> 1. Prevent new references (e.g., devsw_detach).
>>> 2. Wait for existing references to drain (or roll back with
>>> devsw_attach if you don't want to wait, and fail with EBUSY).
>>> 3. Unload.
>> 
>> Yes, of course.  Thanks, I think this will work.
> 
> Well, it almost works!  Just one little problem...  :)
> 
> For some reason, the device's open() routine is being called twice, but the 
> close() routine is only called once.  So every iteration leaves the refcount 
> with a net increment of one.
> 
> I cannot figure out why/how the open routine is called twice.

IIRC the device open() operation gets called on every open while
the device close() operation gets called on last close only.

See misfs/specfs/spec_vnops.c::spec_close().

--
J. Hannken-Illjes - [email protected] - TU Braunschweig (Germany)

Reply via email to