Bug 422231

Summary: contents of /proc/fs/nfsd missing
Product: [Fedora] Fedora Reporter: Jeff Layton <jlayton>
Component: kernelAssignee: Jeff Layton <jlayton>
Status: CLOSED CURRENTRELEASE QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: low Docs Contact:
Priority: low    
Version: rawhideCC: davej, staubach, steved
Target Milestone: ---   
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: kernel-2.6.24-0.83.rc5.fc9 Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2007-12-12 20:55:14 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Jeff Layton 2007-12-12 18:18:52 UTC
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.

Comment 1 Jeff Layton 2007-12-12 20:55:14 UTC
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!