linux-fsdevel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Ian Kent <raven@themaw.net>
To: "Aneesh Kumar K. V" <aneesh.kumar@linux.vnet.ibm.com>
Cc: aelder@sgi.com, Linus Torvalds <torvalds@linux-foundation.org>,
	Nick Piggin <npiggin@kernel.dk>,
	Al Viro <viro@zeniv.linux.org.uk>,
	linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [announce] vfs-scale git tree update
Date: Wed, 12 Jan 2011 13:01:04 +0800	[thread overview]
Message-ID: <1294808464.2821.15.camel@perseus> (raw)
In-Reply-To: <87aaj6u3oi.fsf@linux.vnet.ibm.com>

On Wed, 2011-01-12 at 10:19 +0530, Aneesh Kumar K. V wrote:
> On Wed, 12 Jan 2011 11:59:36 +0800, Ian Kent <raven@themaw.net> wrote:
> > On Tue, 2011-01-11 at 11:57 -0600, Alex Elder wrote:
> > > On Tue, 2011-01-11 at 08:51 -0800, Linus Torvalds wrote:
> > > > On Tue, Jan 11, 2011 at 8:34 AM, Alex Elder <aelder@sgi.com> wrote:
> > > > >
> > > > > FYI, when using this code, as merged by Linus, I hit the
> > > > > BUG_ON() at the beginning of d_set_d_op() when it's called
> > > > > by autofs4_dir_mkdir().  I managed to work around it by
> > > > > just commenting out those BUG_ON() calls but it's something
> > > > > that ought to get addressed properly.
> > > > 
> > > > Yeah, removing the BUG_ON() isn't the right thing to do - it means
> > > > that autofs4 is obviously setting the dentry ops twice for the same
> > > > dentry.
> > > > 
> > > > Possibly the thing could be relaxed to allow setting the _same_ d_op
> > > > pointer, ie do something like
> > > > 
> > > >    if (dentry->d_op == op)
> > > >       return;
> > > > 
> > > > at the top of that function. But looking at it, I don't think that
> > > > fixes the autofs4 issue.
> > > 
> > > That's easy enough, but it seems everybody else ensures
> > > this gets done just once per dentry, and it would be nice
> > > to preserve that "tightness" if possible.
> > > 
> > > > The fact that autofs4 does "d_add()" before it sets the d_ops (or
> > > > other dentry state, for that matter) looks a bit scary. To me that
> > > > smells like it might get a  dentry lookup hit before it's actually
> > > > fully done.
> > > 
> > > Agreed.
> > 
> > Isn't the parent i_mutex held during mkdir()?
> > Still the order can be changed, of course.
> > 
> > > 
> > > > Does it make any difference if you move the various d_add() calls down
> > > > to the end of the functions to when the "dentry" has really been
> > > > instantiated?
> > > 
> > > Looking at it quickly, I don't think that would matter for
> > > the case at hand.  I.e., that might be safer but it doesn't
> > > address the fact that these fields are getting initialized
> > > multiple times.
> > 
> > Yeah, a hangover from changes done over time.
> > Not setting the dentry op in ->lookup() should fix this.
> > 
> 
> for 9p I did the other way round. lookup now set the dentry op for both
> negative and positive dentries and rest of the place we dropped
> d_set_d_op (b8b80cf37c7f0e32729262f805bc0fa81c3e9d12 have the details)

Sadly I can't do that.

For now I need to avoid calls to ->d_revalidate() as much as possible to
reduce a potential deadlock and have access to the flags of the negative
dentry (during create) for the purpose of blocking concurrent walks.

But, if all goes well, later changes will see the autofs
->d_revalidate() gone and consequently the potential deadlock gone as
well.

Ian



  reply	other threads:[~2011-01-12  5:01 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-01-07  7:58 [announce] vfs-scale git tree update Nick Piggin
2011-01-11 16:34 ` Alex Elder
2011-01-11 16:51   ` Linus Torvalds
2011-01-11 17:57     ` Alex Elder
2011-01-11 18:13       ` Linus Torvalds
2011-01-12  3:55         ` Nick Piggin
2011-01-12  3:59       ` Ian Kent
2011-01-12  4:06         ` Nick Piggin
2011-01-12  4:06         ` Linus Torvalds
2011-01-12  4:41           ` Ian Kent
2011-01-12  5:17             ` Ian Kent
2011-01-13  1:01               ` Nick Piggin
2011-01-13  1:48                 ` Ian Kent
2011-01-13  2:14                   ` Nick Piggin
2011-01-13  3:20                     ` Ian Kent
2011-01-13  3:22                       ` Nick Piggin
2011-01-12  4:15         ` Ian Kent
2011-01-12 20:11           ` Alex Elder
2011-01-13  2:23             ` Ian Kent
2011-01-13  3:03               ` Ian Kent
2011-01-13 17:09                 ` Alex Elder
2011-01-12  4:49         ` Aneesh Kumar K. V
2011-01-12  5:01           ` Ian Kent [this message]
2011-01-13  0:58             ` Nick Piggin
2011-01-13  1:46               ` Ian Kent
  -- strict thread matches above, loose matches on Subject: below --
2011-01-05 10:25 Nick Piggin
2011-01-05 21:00 ` Anca Emanuel
2010-12-22  9:53 Nick Piggin
2010-12-22 10:22 ` Sedat Dilek
2010-12-22 10:38 ` Sedat Dilek

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=1294808464.2821.15.camel@perseus \
    --to=raven@themaw.net \
    --cc=aelder@sgi.com \
    --cc=aneesh.kumar@linux.vnet.ibm.com \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=npiggin@kernel.dk \
    --cc=torvalds@linux-foundation.org \
    --cc=viro@zeniv.linux.org.uk \
    /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;
as well as URLs for NNTP newsgroup(s).