NFSD: Enhance the nfsd_cb_setup tracepoint
authorChuck Lever <chuck.lever@oracle.com>
Fri, 14 May 2021 19:57:02 +0000 (15:57 -0400)
committerJ. Bruce Fields <bfields@redhat.com>
Tue, 18 May 2021 17:44:04 +0000 (13:44 -0400)
Display the transport protocol and authentication flavor so admins
can see what they might be getting wrong.

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

index 15ba16c..c2a2a58 100644 (file)
@@ -939,7 +939,8 @@ static int setup_callback_client(struct nfs4_client *clp, struct nfs4_cb_conn *c
        }
        clp->cl_cb_client = client;
        clp->cl_cb_cred = cred;
-       trace_nfsd_cb_setup(clp);
+       trace_nfsd_cb_setup(clp, rpc_peeraddr2str(client, RPC_DISPLAY_NETID),
+                           args.authflavor);
        return 0;
 }
 
index 336dc4c..fc80879 100644 (file)
@@ -910,7 +910,6 @@ DEFINE_EVENT(nfsd_cb_class, nfsd_cb_##name,         \
        TP_PROTO(const struct nfs4_client *clp),        \
        TP_ARGS(clp))
 
-DEFINE_NFSD_CB_EVENT(setup);
 DEFINE_NFSD_CB_EVENT(state);
 DEFINE_NFSD_CB_EVENT(lost);
 DEFINE_NFSD_CB_EVENT(shutdown);
@@ -931,6 +930,32 @@ TRACE_DEFINE_ENUM(RPC_AUTH_GSS_KRB5P);
                { RPC_AUTH_GSS_KRB5I,           "krb5i" },              \
                { RPC_AUTH_GSS_KRB5P,           "krb5p" })
 
+TRACE_EVENT(nfsd_cb_setup,
+       TP_PROTO(const struct nfs4_client *clp,
+                const char *netid,
+                rpc_authflavor_t authflavor
+       ),
+       TP_ARGS(clp, netid, authflavor),
+       TP_STRUCT__entry(
+               __field(u32, cl_boot)
+               __field(u32, cl_id)
+               __field(unsigned long, authflavor)
+               __array(unsigned char, addr, sizeof(struct sockaddr_in6))
+               __array(unsigned char, netid, 8)
+       ),
+       TP_fast_assign(
+               __entry->cl_boot = clp->cl_clientid.cl_boot;
+               __entry->cl_id = clp->cl_clientid.cl_id;
+               strlcpy(__entry->netid, netid, sizeof(__entry->netid));
+               __entry->authflavor = authflavor;
+               memcpy(__entry->addr, &clp->cl_cb_conn.cb_addr,
+                       sizeof(struct sockaddr_in6));
+       ),
+       TP_printk("addr=%pISpc client %08x:%08x proto=%s flavor=%s",
+               __entry->addr, __entry->cl_boot, __entry->cl_id,
+               __entry->netid, show_nfsd_authflavor(__entry->authflavor))
+);
+
 TRACE_EVENT(nfsd_cb_setup_err,
        TP_PROTO(
                const struct nfs4_client *clp,