linux-fsdevel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: raven@themaw.net
To: Miklos Szeredi <miklos@szeredi.hu>
Cc: mike@waychison.com, linux-fsdevel@vger.kernel.org,
	jamie@shareable.org, viro@parcelfarce.linux.theplanet.co.uk
Subject: Re: [RFC][PATCH 1/8] namespace: use global namespace semaphore
Date: Sat, 4 Jun 2005 15:13:07 +0800 (WST)	[thread overview]
Message-ID: <Pine.LNX.4.62.0506041452130.8502@donald.themaw.net> (raw)
In-Reply-To: <E1DeSb5-0004Eu-00@dorka.pomaz.szeredi.hu>

On Sat, 4 Jun 2005, Miklos Szeredi wrote:

> > What interface?
> > 
> > I'm not aware of any clearly defined API for access to in kernel functions 
> > for the VFS except for the various operations methods. Unfortuneatly, any 
> > struct that is passed to them should be largely imutable as well. Which 
> > ultimeatly covers the structs we are talking about here.
> 
> You are right that it's not an explicitly defined API.  However the
> only _truly_ exported part of the mount api is mntget/mntput.  You'll
> notice, that only closely related code (path lookup, dentry cache)
> will ever touch anything in struct vfsmount, and even those only in a
> very few places.
> 
> So struct vfsmount is _not_ part of the API, and no unrelated code (in
> or out of the kernel) should touch any part of it.
> 
> > All I see is people taking the oppertunity to stop exporting functions 
> > without consideration to what should be considered part of an API.
> > 
> > Some companies do this really well to foster development.
> 
> And generally using things which are not really part of an API just
> results in messy and buggy code.  So even if it makes development
> easier, it's not worth it on the long run.

OK. Sorry to go on about this but it's is just my little hobby horse.

> 
> > Yes. That would be the case except there's a reference held to the 
> > vfsmount in the struct path prior to point at which follow_link is called, 
> > which I don't think can be obtained.
> > 
> > In any case I'll find a way to work around it.
> 
> I don't see why you'd need to work around anything.  Following pseudo
> code should work perfectly fine:
> 
> int autofs_follow_link(struct dentry *dentry, struct nameidata *nd)
> {
> 	if (!is_mount_in_progress(dentry))
> 		send_trigger_to_userspace(dentry)
> 
> 	wait_event(mountpoint_waitq(dentry), !is_mount_in_progress(dentry));
> 	while(follow_down(&nd->mnt, &nd->dentry));
> 	return 0;
> }

Indeed, that's pretty much what I have.

And yes I partially missed (ignored) the fact that the follow down should 
do the trick because I believe that there is a follow_down (follow_mount 
actually) that will cause reference to a vfsmount (not accessible in 
follow_link) prior to the follow_link call that, at least in one case, 
is not put. I believe this is held in a struct path (next) local variable. 
For a normal link nd->mnt and next.mnt would be the same. But maybe I'm 
mistaken.

This is what I mean when I say there appears to be an assumption that a 
mount is not followed immediately before the follow_link call in 
link_path_walk.

Ian


  reply	other threads:[~2005-06-04  7:22 UTC|newest]

Thread overview: 37+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-05-30 13:19 [RFC][PATCH 1/8] namespace: use global namespace semaphore Miklos Szeredi
2005-05-31  2:58 ` Ian Kent
2005-05-31  3:23   ` Mike Waychison
2005-05-31  7:02     ` Ian Kent
2005-05-31  7:56       ` Miklos Szeredi
2005-05-31  9:34         ` Ian Kent
2005-05-31 10:05           ` Miklos Szeredi
2005-05-31 10:13             ` Miklos Szeredi
2005-05-31 15:43               ` Mike Waychison
2005-06-01  5:04               ` Ian Kent
2005-06-01  8:35                 ` Miklos Szeredi
2005-06-03  2:10                   ` Ian Kent
2005-06-03  5:28                     ` Miklos Szeredi
2005-06-04  4:13                       ` raven
2005-06-04  6:32                         ` Miklos Szeredi
2005-06-04  6:50                           ` raven
2005-06-04  7:20                             ` Miklos Szeredi
2005-06-04  7:27                               ` raven
2005-06-03 17:22                     ` Mike Waychison
2005-06-04  4:32                       ` raven
2005-06-03 17:13               ` Mike Waychison
2005-06-03 18:20                 ` Miklos Szeredi
2005-06-01  4:36             ` Ian Kent
2005-06-03 17:24               ` Mike Waychison
2005-06-04  4:38                 ` raven
2005-05-31 15:55       ` Mike Waychison
2005-05-31 16:08         ` Miklos Szeredi
2005-06-01  4:18           ` Ian Kent
2005-06-01  8:28             ` Miklos Szeredi
2005-06-03  2:23               ` Ian Kent
2005-06-03  5:18                 ` Miklos Szeredi
2005-06-04  4:53                   ` raven
2005-06-04  6:57                     ` Miklos Szeredi
2005-06-04  7:13                       ` raven [this message]
2005-06-03 17:26             ` Mike Waychison
2005-06-01  3:57         ` Ian Kent
2005-06-03 17:07           ` Mike Waychison

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=Pine.LNX.4.62.0506041452130.8502@donald.themaw.net \
    --to=raven@themaw.net \
    --cc=jamie@shareable.org \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=mike@waychison.com \
    --cc=miklos@szeredi.hu \
    --cc=viro@parcelfarce.linux.theplanet.co.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).