lkml.org 
[lkml]   [2010]   [Feb]   [11]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
SubjectRe: [PATCH] sysfs: differentiate between locking links and non-links
From
Date
Tejun Heo <tj@kernel.org> writes:

> Hello, Eric.
>
> On 02/12/2010 03:08 AM, Eric W. Biederman wrote:
>> I have been playing with it and so far the code doesn't seem too bad. I have
>> however come across another misfeature of sysfs. sysfs_get_active_two appears
>> to be unnecessary overkill.
>>
>> The purpose of the active references are to allows us to block when
>> removing sysfs entries that have custom methods so we don't remove
>> modules or those custom methods don't remove access data structures
>> after the files have been removed. Further sysfs_remove_dir remove
>> all elements in the directory before removing the directory itself, so
>> there is no chance we will remove a directory with active children.
>>
>> Tejun do you know of any other reason we want sysfs_get_active_two?
>>
>> If not I think we can make active references apply exclusively to
>> attributes.
>
> Yeah, it's necessary for something which I can't remember from the top
> of my head ATM. It maybe has something to do with attributes not
> holding reference to the owning module while the parent kobj does.
> I'll dig in but IIRC it's not there just for fun. Is it difficult to
> do the lockdep annotation without removing get_active_two?

Probably double the code and testing, plus. I could not figure out
where to stash a lock_class_key for directories. So it certainly would
be a pain to keep get_active_two just because.

If you can figure out what the value of an active reference on a directory
is we can keep them.

My reasoning is that we effectively get an active reference on directories
for free because we have to delete the children before we can delete a
directory.

I do know we have to go up to the directory to get the kobject. So
from that perspective it makes sense.

It would not surprise me if there was a reason that is now gone
that required the active references on directories. sysfs has gone through
a lot of cleanups since that code was added.

Eric


\
 
 \ /
  Last update: 2010-02-12 02:23    [from the cache]
©2003-2011 Jasper Spaans