NFS: Trace effects of readdirplus on the dcache
authorTrond Myklebust <trond.myklebust@hammerspace.com>
Sun, 20 Feb 2022 00:19:35 +0000 (19:19 -0500)
committerTrond Myklebust <trond.myklebust@hammerspace.com>
Wed, 2 Mar 2022 13:43:39 +0000 (08:43 -0500)
Trace the effects of readdirplus on attribute and dentry revalidation.

Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
fs/nfs/dir.c
fs/nfs/nfstrace.h

index d591d20f753467d9f0fc39a14d7f32c20bdc9ee1..8b25a39b1761a1074599cd80adf6cb645bf82026 100644 (file)
@@ -754,8 +754,12 @@ again:
                        status = nfs_refresh_inode(d_inode(dentry), entry->fattr);
                        if (!status)
                                nfs_setsecurity(d_inode(dentry), entry->fattr);
+                       trace_nfs_readdir_lookup_revalidate(d_inode(parent),
+                                                           dentry, 0, status);
                        goto out;
                } else {
+                       trace_nfs_readdir_lookup_revalidate_failed(
+                               d_inode(parent), dentry, 0);
                        d_invalidate(dentry);
                        dput(dentry);
                        dentry = NULL;
@@ -777,6 +781,7 @@ again:
                dentry = alias;
        }
        nfs_set_verifier(dentry, dir_verifier);
+       trace_nfs_readdir_lookup(d_inode(parent), dentry, 0);
 out:
        dput(dentry);
 }
index c2d0543ecb2d73c646c8ccbedad4ceb464e28444..7c1102b991d009d6e7b4828570fb7883b9585081 100644 (file)
@@ -432,6 +432,9 @@ DEFINE_NFS_LOOKUP_EVENT(nfs_lookup_enter);
 DEFINE_NFS_LOOKUP_EVENT_DONE(nfs_lookup_exit);
 DEFINE_NFS_LOOKUP_EVENT(nfs_lookup_revalidate_enter);
 DEFINE_NFS_LOOKUP_EVENT_DONE(nfs_lookup_revalidate_exit);
+DEFINE_NFS_LOOKUP_EVENT(nfs_readdir_lookup);
+DEFINE_NFS_LOOKUP_EVENT(nfs_readdir_lookup_revalidate_failed);
+DEFINE_NFS_LOOKUP_EVENT_DONE(nfs_readdir_lookup_revalidate);
 
 TRACE_EVENT(nfs_atomic_open_enter,
                TP_PROTO(