Message ID | 87lhddhpso.fsf@x220.int.ebiederm.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Eric W. Biederman wrote: > I don't have a clue what the issue would be but I would start with > something like the patch below. OK using it I got the following... This time with /dev on another machine (same nfs root-fs): Aug 17 13:57:04 dhcp195 kernel: NFS: nfs_lookup_revalidate(/dev): nfs_lookup_verify_inode() failed Aug 17 13:57:04 dhcp195 kernel: NFS: nfs_lookup_revalidate(/dev) is invalid Aug 17 13:57:04 dhcp195 kernel: NFSROOT __detach_mounts: dev Aug 17 13:57:04 dhcp195 kernel: CPU: 3 PID: 32644 Comm: modtrack Tainted: P O 4.1.6-lomac1-00296-gfeae456 #7 Aug 17 13:57:04 dhcp195 kernel: Hardware name: System manufacturer System Product Name/P7P55D, BIOS 1807 07/22/2010 Aug 17 13:57:04 dhcp195 kernel: ffff88021315bc18 ffff88021315bbd8 ffffffff81560638 000000000000b413 Aug 17 13:57:04 dhcp195 kernel: ffff880216460f18 ffff88021315bbf8 ffffffff81106e1f 000000000000001b Aug 17 13:57:04 dhcp195 kernel: ffff880216460f18 ffff88021315bc48 ffffffff810ffcf5 0000000005dd05dd Aug 17 13:57:04 dhcp195 kernel: Call Trace: Aug 17 13:57:04 dhcp195 kernel: [<ffffffff81560638>] dump_stack+0x4c/0x6e Aug 17 13:57:04 dhcp195 kernel: [<ffffffff81106e1f>] __detach_mounts+0x20/0xdf Aug 17 13:57:04 dhcp195 kernel: [<ffffffff810ffcf5>] d_invalidate+0x9a/0xc8 Aug 17 13:57:04 dhcp195 kernel: [<ffffffff810f6c49>] lookup_fast+0x1f5/0x26f Aug 17 13:57:04 dhcp195 kernel: [<ffffffff810f6ef0>] do_last.isra.43+0xd6/0x9fb Aug 17 13:57:04 dhcp195 kernel: [<ffffffff810f92a4>] path_openat+0x1d1/0x53e Aug 17 13:57:04 dhcp195 kernel: [<ffffffff810fa077>] ? user_path_at_empty+0x63/0x93 Aug 17 13:57:04 dhcp195 kernel: [<ffffffff810fa11c>] do_filp_open+0x35/0x85 Aug 17 13:57:04 dhcp195 kernel: [<ffffffff811f1aa9>] ? find_next_zero_bit+0x17/0x1d Aug 17 13:57:04 dhcp195 kernel: [<ffffffff81104364>] ? __alloc_fd+0xdd/0xef Aug 17 13:57:04 dhcp195 kernel: [<ffffffff810eca9c>] do_sys_open+0x146/0x1d5 Aug 17 13:57:04 dhcp195 kernel: [<ffffffff810ecb55>] SyS_openat+0xf/0x11 Aug 17 13:57:04 dhcp195 kernel: [<ffffffff81565a57>] system_call_fastpath+0x12/0x6a So this looks like I would need to add some debug output to "nfs_lookup_verify_inode" then right? Sven
diff --git a/fs/nfs/dir.c b/fs/nfs/dir.c index 547308a5ec6f..97c70c887b23 100644 --- a/fs/nfs/dir.c +++ b/fs/nfs/dir.c @@ -1167,7 +1167,7 @@ static int nfs_lookup_revalidate(struct dentry *dentry, unsigned int flags) return -ECHILD; if (NFS_STALE(inode)) - goto out_bad; + goto out_bad1; error = -ENOMEM; fhandle = nfs_alloc_fhandle(); @@ -1183,11 +1183,11 @@ static int nfs_lookup_revalidate(struct dentry *dentry, unsigned int flags) error = NFS_PROTO(dir)->lookup(dir, &dentry->d_name, fhandle, fattr, label); trace_nfs_lookup_revalidate_exit(dir, dentry, flags, error); if (error) - goto out_bad; + goto out_bad2; if (nfs_compare_fh(NFS_FH(inode), fhandle)) - goto out_bad; + goto out_bad3; if ((error = nfs_refresh_inode(inode, fattr)) != 0) - goto out_bad; + goto out_bad4; nfs_setsecurity(inode, fattr, label); @@ -1210,6 +1210,8 @@ out_set_verifier: __func__, dentry); return 1; out_zap_parent: + dfprintk(LOOKUPCACHE "NFS: %s(%pd2): nfs_lookup_verify_inode() failed\n", + __func__, dentry); nfs_zap_caches(dir); out_bad: WARN_ON(flags & LOOKUP_RCU); @@ -1233,6 +1235,22 @@ out_zap_parent: dfprintk(LOOKUPCACHE, "NFS: %s(%pd2) is invalid\n", __func__, dentry); return 0; +out_bad1: + dfprintk(LOOKUPCACHE, "NFS: %s(%pd2): NFS_STALE(inode)\n", + __func__, dentry); + goto out_bad; +out_bad2: + dfprintk(LOOKUPCACHE, "NFS: %s(%pd2): NFS_PROTO(dir)->lookup -> %u\n", + __func__, dentry, error); + goto out_bad; +out_bad3: + dfprintk(LOOKUPCACHE, "NFS: %s(%pd2): nfs_compare_fh() failed\n", + __func__, dentry); + goto out_bad; +out_bad4: + dfprintk(LOOKUPCACHE "NFS: %s(%pd2): nfs_refresh_inode() -> %u\n", + __func__, dentry, error); + goto out_bad; out_error: WARN_ON(flags & LOOKUP_RCU); nfs_free_fattr(fattr);