On Tue, 2010-06-22 at 14:49 +0900, J. R. Okajima wrote:
> Ian Kent:
> > +static vfsmount *autofs4_find_vfsmount(struct path *parent, struct dentry 
> > *root)
> > +{
> > +   struct vfsmount *mnt = NULL;
> > +   struct dentry *child;
> > +
> > +   spin_lock(&dcache_lock);
> > +   list_for_each_entry(child, &dentry->d_subdirs, d_u.d_child) {
> 
> dentry->d_subdirs?
> parent->dentry->...?

Yep, thanks, cut and paste error.

Like I said, I don't want to go though the test process unless I have
something that is, in principal, OK.

If whatever approach we use is acceptable, and will work, then I'll put
the effort into it. I just don' want to spend a heap of time on
something that is basically not the right thing to do. For example,
exporting lookup_mnt?

> 
> Or how about iterate_mounts() instead of loop over dentries?
> For example (just a example),
> 
> struct args {
>       /* input */
>       struct dentry *root;
> 
>       /* output */
>       struct vfsmount *mnt;
> };
> 
> static int compare_mnt(struct vfsmount *mnt, void *arg)
> {
>       struct args *a = arg;
> 
>       if (mnt->mnt_root != a->root)
>               return 0;
>       a->mnt = mntget(mnt);
>       return 1;
> }
> 
> struct vfsmount *autofs4_find_vfsmount(struct dentry *root)
> {
>       int err;
>       struct args args = {
>               .root = root
>       };
> 
>       err = iterate_mounts(compare_mnt, &args, current->nsproxy->mnt_ns);
> }

Oh, I'm not up with this, I'll have to check this out, might be useful
for more than just this case, thanks for the comments.

Ian


_______________________________________________
autofs mailing list
[email protected]
http://linux.kernel.org/mailman/listinfo/autofs

Reply via email to