On recent rawhide kernels, the contents of /proc/fs/nfsd seem to be missing. The filesystem is getting mounted according to /proc/mounts, but there are no entries in it. This causes nfs serving to fail. I've done a bisect search: kernel-2.6.24-0.62.rc3.git5.fc9.x86_64 and before don't have the problem, kernel-2.6.24-0.66.rc3.git7.fc9.x86_64 and after do. Looking at a diff between the two codebases now to see if I can find what's happened to cause this. The only changes I see under /fs between these two revs is this: diff -urN old/linux-2.6.23.noarch/fs/proc/generic.c new/linux-2.6.23.noarch/fs/proc/generic.c --- old/linux-2.6.23.noarch/fs/proc/generic.c 2007-12-03 15:29:24.000000000 -0500 +++ new/linux-2.6.23.noarch/fs/proc/generic.c 2007-12-12 13:09:05.000000000 -0500 @@ -374,9 +374,16 @@ return 1; } +static int proc_revalidate_dentry(struct dentry *dentry, struct nameidata *nd) +{ + d_drop(dentry); + return 0; +} + static struct dentry_operations proc_dentry_operations = { .d_delete = proc_delete_dentry, + .d_revalidate = proc_revalidate_dentry, }; /* @@ -397,8 +404,11 @@ if (de->namelen != dentry->d_name.len) continue; if (!memcmp(dentry->d_name.name, de->name, de->namelen)) { - unsigned int ino = de->low_ino; + unsigned int ino; + if (de->shadow_proc) + de = de->shadow_proc(current, de); + ino = de->low_ino; de_get(de); spin_unlock(&proc_subdir_lock); error = -EINVAL; ...there are also some changs to proc_net.c, but they seem less suspect.
Tested kernel-2.6.24-0.83.rc5.fc9.x86_64 from koji and it does not show this issue. So I guess whatever it was was fixed upstream. Yay!