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
next prev parent 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).