tech-kern archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: Locking strategy for device deletion (also see PR kern/48536)



> On 08 Jun 2016, at 13:47, Paul Goyette <paul%whooppee.com@localhost> 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 <paul%whooppee.com@localhost>
>>> 
>>>  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 - hannken%eis.cs.tu-bs.de@localhost - TU Braunschweig (Germany)



Home | Main Index | Thread Index | Old Index