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