NFSD: Add nfsd_clid_confirmed tracepoint
authorChuck Lever <chuck.lever@oracle.com>
Fri, 14 May 2021 19:55:48 +0000 (15:55 -0400)
committerJ. Bruce Fields <bfields@redhat.com>
Tue, 18 May 2021 17:44:03 +0000 (13:44 -0400)
This replaces a dprintk call site in order to get greater visibility
on when client IDs are confirmed or re-used. Simple example:

            nfsd-995   [000]   126.622975: nfsd_compound:        xid=0x3a34e2b1 opcnt=1
            nfsd-995   [000]   126.623005: nfsd_cb_args:         addr=192.168.2.51:45901 client 60958e3b:9213ef0e prog=1073741824 ident=1
            nfsd-995   [000]   126.623007: nfsd_compound_status: op=1/1 OP_SETCLIENTID status=0
            nfsd-996   [001]   126.623142: nfsd_compound:        xid=0x3b34e2b1 opcnt=1
  >>>>      nfsd-996   [001]   126.623146: nfsd_clid_confirmed:  client 60958e3b:9213ef0e
            nfsd-996   [001]   126.623148: nfsd_cb_probe:        addr=192.168.2.51:45901 client 60958e3b:9213ef0e state=UNKNOWN
            nfsd-996   [001]   126.623154: nfsd_compound_status: op=1/1 OP_SETCLIENTID_CONFIRM status=0

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
fs/nfsd/nfs4state.c
fs/nfsd/trace.h

index 69405cc9d82311468b80c3c100bad4dbe598a6ad..37cef1f498e14593759a7dd5f0db8adf2e57da6c 100644 (file)
@@ -2816,14 +2816,14 @@ move_to_confirmed(struct nfs4_client *clp)
 
        lockdep_assert_held(&nn->client_lock);
 
-       dprintk("NFSD: move_to_confirm nfs4_client %p\n", clp);
        list_move(&clp->cl_idhash, &nn->conf_id_hashtbl[idhashval]);
        rb_erase(&clp->cl_namenode, &nn->unconf_name_tree);
        add_clp_to_name_tree(clp, &nn->conf_name_tree);
-       if (!test_and_set_bit(NFSD4_CLIENT_CONFIRMED, &clp->cl_flags) &&
-           clp->cl_nfsd_dentry &&
-           clp->cl_nfsd_info_dentry)
-               fsnotify_dentry(clp->cl_nfsd_info_dentry, FS_MODIFY);
+       if (!test_and_set_bit(NFSD4_CLIENT_CONFIRMED, &clp->cl_flags)) {
+               trace_nfsd_clid_confirmed(&clp->cl_clientid);
+               if (clp->cl_nfsd_dentry && clp->cl_nfsd_info_dentry)
+                       fsnotify_dentry(clp->cl_nfsd_info_dentry, FS_MODIFY);
+       }
        renew_client_locked(clp);
 }
 
index 1265d6f058ee6bbcac15ae9f0f5699e9fa169917..c3d47fd68ff520d2260a6d7a204269a95505126e 100644 (file)
@@ -511,6 +511,7 @@ DEFINE_EVENT(nfsd_clientid_class, nfsd_clid_##name, \
        TP_PROTO(const clientid_t *clid), \
        TP_ARGS(clid))
 
+DEFINE_CLIENTID_EVENT(confirmed);
 DEFINE_CLIENTID_EVENT(expired);
 DEFINE_CLIENTID_EVENT(purged);
 DEFINE_CLIENTID_EVENT(renew);