From: Peter Zijlstra <peterz@infradead.org>
To: Louis.Rilling@kerlabs.com
Cc: Joel Becker <Joel.Becker@oracle.com>,
Andrew Morton <akpm@linux-foundation.org>,
linux-kernel@vger.kernel.org, cluster-devel@redhat.com,
swhiteho <swhiteho@redhat.com>
Subject: Re: [PATCH] configfs: Silence lockdep on mkdir(), rmdir() and configfs_depend_item()
Date: Mon, 26 Jan 2009 15:19:22 +0100 [thread overview]
Message-ID: <1232979562.4863.101.camel@laptop> (raw)
In-Reply-To: <20090126140032.GE7532@hawkmoon.kerlabs.com>
On Mon, 2009-01-26 at 15:00 +0100, Louis Rilling wrote:
> > Its not a locking correctness thing, but simply not being able to do it
> > from the vfs calls because those assume locks held?
> >
> > Can't you simply punt the work to a worklet once you've created/removed
> > the non-default group, which can be done from within the vfs callback ?
>
> I'm not sure to understand your suggestion. Is this:
> 1) for mkdir(), create the non-default group, but without its default groups,
> and defer their creation to a worker which won't have constraints on locks held
> by any caller;
> 2) for rmdir(), unlink the non-default group, but without unlinking its default
> groups, and defer the recursive work to a lock-free context?
>
> For mkdir(), this may work. Maybe a bit confusing for userspace, since mkdir(A)
> returns as soon as A is created, but A may be populated later and userspace may
> rely on A being populated as soon as it is created (current behavior). As a
> configfs user, this makes my life harder...
Right, so that is the whole crux of the matter?
Initially I understood the whole recursive locking issue to be about
having to serialize mkdir vs rmdir so that you would know the default
groups to be empty etc.
You could create the subtree before you link it in. i_op->mkdir() only
has the parent i_mutex held, so you should be able to create your inode,
and all default groups (some of who will have the non-default group as
parent, but that's ok, as we don't have that locked yet).
Once you've constructed this, you could connect the non-default group to
its parent.
Also, you don't _need_ to have any i_mutex's locked here, because non of
these inodes are reachable.
> For rmdir(), is this safe to unlink a non-empty directory, and to empty it
> afterwards? This looks like going back to the unmount problem.
Dunno :-), I think it should be safe. The only guarantee you need is
that there are no refs to inodes in the decoupled sub-tree (other than
your own of course.)
So you'd only need to punt the rmdir cleanup to eventd or something.
next prev parent reply other threads:[~2009-01-26 14:19 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-12-11 14:20 configfs, dlm_controld & lockdep Steven Whitehouse
2008-12-11 14:44 ` Louis Rilling
2008-12-11 17:34 ` Joel Becker
2008-12-12 10:06 ` Louis Rilling
2008-12-12 15:29 ` [PATCH] configfs: Silence lockdep on mkdir(), rmdir() and configfs_depend_item() Louis Rilling
2008-12-17 21:40 ` Andrew Morton
2008-12-17 22:03 ` Joel Becker
2008-12-17 22:09 ` Andrew Morton
2008-12-18 7:26 ` Peter Zijlstra
2008-12-18 9:27 ` Joel Becker
2008-12-18 11:15 ` Louis Rilling
2008-12-18 18:00 ` Make lockdep happy with configfs Louis Rilling
2009-01-26 11:51 ` Louis Rilling
2009-01-28 3:44 ` Joel Becker
2008-12-18 18:00 ` [PATCH 1/2] configfs: Silence lockdep on mkdir() and rmdir() Louis Rilling
2009-01-28 3:55 ` Joel Becker
2009-01-28 10:38 ` Louis Rilling
2008-12-18 18:00 ` [PATCH 2/2] configfs: Rework configfs_depend_item() locking and make lockdep happy Louis Rilling
2009-01-28 4:13 ` Joel Becker
2009-01-28 10:32 ` Louis Rilling
2008-12-18 11:26 ` [PATCH] configfs: Silence lockdep on mkdir(), rmdir() and configfs_depend_item() Steven Whitehouse
2008-12-18 11:48 ` Louis Rilling
2008-12-18 11:56 ` Peter Zijlstra
2008-12-18 12:28 ` Peter Zijlstra
2008-12-18 22:58 ` Joel Becker
2008-12-19 10:29 ` Louis Rilling
2009-01-26 12:30 ` Peter Zijlstra
2009-01-26 13:24 ` Louis Rilling
2009-01-26 13:41 ` Peter Zijlstra
2009-01-26 14:00 ` Louis Rilling
2009-01-26 14:19 ` Peter Zijlstra [this message]
2009-01-26 14:55 ` Louis Rilling
2009-01-28 3:05 ` Joel Becker
2009-01-28 3:41 ` Joel Becker
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1232979562.4863.101.camel@laptop \
--to=peterz@infradead.org \
--cc=Joel.Becker@oracle.com \
--cc=Louis.Rilling@kerlabs.com \
--cc=akpm@linux-foundation.org \
--cc=cluster-devel@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=swhiteho@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox