[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <4A15046A.10106@kernel.org>
Date: Thu, 21 May 2009 16:36:10 +0900
From: Tejun Heo <tj@...nel.org>
To: "Eric W. Biederman" <ebiederm@...ssion.com>
CC: Andrew Morton <akpm@...ux-foundation.org>,
Greg Kroah-Hartman <gregkh@...e.de>,
linux-kernel@...r.kernel.org,
Cornelia Huck <cornelia.huck@...ibm.com>,
linux-fsdevel@...r.kernel.org,
"Eric W. Biederman" <ebiederm@...stanetworks.com>
Subject: Re: [PATCH 04/20] sysfs: Handle the general case of removing of directories
with subdirectories
Eric W. Biederman wrote:
>> I agree we should be heading this way but what happens to attributes
>> or directories living below the subdirectories? If it's gonna handle
>> recursive case, I think it better do it properly. I had patches of
>> similar effect.
>
> I do handle it properly. sysfs_get_one finds the deepest child of the
> first directory entry. Then I remove it. And I repeat until done.
>
> The locking is correct, something that is much more difficult to
> tell with your version.
Why? :-)
> By grabbing and dropping the sysfs_mutex things are simpler, and they
> get even simpler in future patches.
>
> Now looking at that code in detail there is a question of what happens if
> we add a directory entry while we are recursively deleting a directory.
> Neither your patch, my patch, nor the existing code handle that case
> (assuming the sysfs_dirent) was looked up before it is removed from it's
> parent directory. I expect another patch is called for to plug that
> theoretical gap.
>
> I expect the way to close that hole is to have an extra flag that says
> we are removing a directory entry and refuse to add if that flag is
> set.
>
> I would prefer to only remove empty directories. But when I
> instrumented things up I found cases where that does indeed happen.
IIRC, my version did the whole thing while holding sysfs_mutex, so
it's safe against such races. I can't really see why ops like this
can't be atomic in sysfs. I don't really care how things are done but
please make it atomic.
Thanks.
--
tejun
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists