Messages in this thread | | | Date | Fri, 7 Dec 2007 15:32:42 -0500 | From | Erez Zadok <> | Subject | Re: [NFS] NFSv2/3 broken exporting/mounting (permission denied) in 2.6.24-rc4 |
| |
In message <20071207200655.GD2204@fieldses.org>, "J. Bruce Fields" writes: > On Fri, Dec 07, 2007 at 03:00:13PM -0500, Erez Zadok wrote: [...] > Those files are actually in a separate filesystem (of type "nfsd") which > is supposed to be mounted on /proc/fs/nfsd/. So that mount must have > failed in the bad case? It's not immediately obvious to me what this > patch has to do with that. Hm.
Yes, it is indeed a separate mount in both cases, but in the broken case, /proc/fs/nfsd is empty.
The patch in question introduces a proc ->d_revalidate method which does this:
static int proc_revalidate_dentry(struct dentry *dentry, struct nameidata *nd) { d_drop(dentry); return 0; }
I'm not sure why it drops the dentry and then returns OK to the VFS; is it to force the VFS to revalidate the dentry? In that case, I think it should return -ESTALE. I also don't know why /proc needs a ->d_revalidate in the first place (it was fine up until now). Perhaps what proc does now is correct, but its behavior has changed such that nfsd's /proc/fs/nfsd needs to do something different (like grab an extra dentry ref?).
Anyway, if I comment out the d_drop line in proc_revalidate_dentry, or remove proc's ->d_revalidate method, nfs exporting works again.
Someone more familiar with this patch and /proc should investigate. Until then, nfsv2/3 exporting are broken in 2.6.24-rc4.
> --b.
Cheers, Erez.
| |