Message ID | 20220223211305.296816-3-trondmy@kernel.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Readdir improvements | expand |
On 23 Feb 2022, at 16:12, trondmy@kernel.org wrote: > From: Trond Myklebust <trond.myklebust@hammerspace.com> > > Enable tracing of lookup revalidation failures. > > Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com> > --- > fs/nfs/dir.c | 17 +++++------------ > 1 file changed, 5 insertions(+), 12 deletions(-) > > diff --git a/fs/nfs/dir.c b/fs/nfs/dir.c > index ebddc736eac2..1aa55cac9d9a 100644 > --- a/fs/nfs/dir.c > +++ b/fs/nfs/dir.c > @@ -1474,9 +1474,7 @@ nfs_lookup_revalidate_done(struct inode *dir, > struct dentry *dentry, > { > switch (error) { > case 1: > - dfprintk(LOOKUPCACHE, "NFS: %s(%pd2) is valid\n", > - __func__, dentry); > - return 1; > + break; > case 0: > /* > * We can't d_drop the root of a disconnected tree: > @@ -1485,13 +1483,10 @@ nfs_lookup_revalidate_done(struct inode *dir, > struct dentry *dentry, > * inodes on unmount and further oopses. > */ > if (inode && IS_ROOT(dentry)) > - return 1; > - dfprintk(LOOKUPCACHE, "NFS: %s(%pd2) is invalid\n", > - __func__, dentry); > - return 0; > + error = 1; > + break; > } > - dfprintk(LOOKUPCACHE, "NFS: %s(%pd2) lookup returned error %d\n", > - __func__, dentry, error); > + trace_nfs_lookup_revalidate_exit(dir, dentry, 0, error); There's a path through nfs4_lookup_revalidate that will now only produce this exit tracepoint. Does it need the _enter tracepoint added? Ben
On Thu, 2022-02-24 at 09:14 -0500, Benjamin Coddington wrote: > On 23 Feb 2022, at 16:12, trondmy@kernel.org wrote: > > > From: Trond Myklebust <trond.myklebust@hammerspace.com> > > > > Enable tracing of lookup revalidation failures. > > > > Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com> > > --- > > fs/nfs/dir.c | 17 +++++------------ > > 1 file changed, 5 insertions(+), 12 deletions(-) > > > > diff --git a/fs/nfs/dir.c b/fs/nfs/dir.c > > index ebddc736eac2..1aa55cac9d9a 100644 > > --- a/fs/nfs/dir.c > > +++ b/fs/nfs/dir.c > > @@ -1474,9 +1474,7 @@ nfs_lookup_revalidate_done(struct inode *dir, > > struct dentry *dentry, > > { > > switch (error) { > > case 1: > > - dfprintk(LOOKUPCACHE, "NFS: %s(%pd2) is valid\n", > > - __func__, dentry); > > - return 1; > > + break; > > case 0: > > /* > > * We can't d_drop the root of a disconnected tree: > > @@ -1485,13 +1483,10 @@ nfs_lookup_revalidate_done(struct inode > > *dir, > > struct dentry *dentry, > > * inodes on unmount and further oopses. > > */ > > if (inode && IS_ROOT(dentry)) > > - return 1; > > - dfprintk(LOOKUPCACHE, "NFS: %s(%pd2) is invalid\n", > > - __func__, dentry); > > - return 0; > > + error = 1; > > + break; > > } > > - dfprintk(LOOKUPCACHE, "NFS: %s(%pd2) lookup returned error > > %d\n", > > - __func__, dentry, error); > > + trace_nfs_lookup_revalidate_exit(dir, dentry, 0, error); > > > There's a path through nfs4_lookup_revalidate that will now only > produce > this exit tracepoint. Does it need the _enter tracepoint added? You're thinking about the nfs_lookup_revalidate_delegated() path? The _enter() tracepoint doesn't provide any useful information that isn't already provided by the _exit(), AFAICS.
diff --git a/fs/nfs/dir.c b/fs/nfs/dir.c index ebddc736eac2..1aa55cac9d9a 100644 --- a/fs/nfs/dir.c +++ b/fs/nfs/dir.c @@ -1474,9 +1474,7 @@ nfs_lookup_revalidate_done(struct inode *dir, struct dentry *dentry, { switch (error) { case 1: - dfprintk(LOOKUPCACHE, "NFS: %s(%pd2) is valid\n", - __func__, dentry); - return 1; + break; case 0: /* * We can't d_drop the root of a disconnected tree: @@ -1485,13 +1483,10 @@ nfs_lookup_revalidate_done(struct inode *dir, struct dentry *dentry, * inodes on unmount and further oopses. */ if (inode && IS_ROOT(dentry)) - return 1; - dfprintk(LOOKUPCACHE, "NFS: %s(%pd2) is invalid\n", - __func__, dentry); - return 0; + error = 1; + break; } - dfprintk(LOOKUPCACHE, "NFS: %s(%pd2) lookup returned error %d\n", - __func__, dentry, error); + trace_nfs_lookup_revalidate_exit(dir, dentry, 0, error); return error; } @@ -1623,9 +1618,7 @@ nfs_do_lookup_revalidate(struct inode *dir, struct dentry *dentry, goto out_bad; trace_nfs_lookup_revalidate_enter(dir, dentry, flags); - error = nfs_lookup_revalidate_dentry(dir, dentry, inode); - trace_nfs_lookup_revalidate_exit(dir, dentry, flags, error); - return error; + return nfs_lookup_revalidate_dentry(dir, dentry, inode); out_valid: return nfs_lookup_revalidate_done(dir, dentry, inode, 1); out_bad: