NFS: Make trace_nfs4_setup_sequence() available to NFS v4.0
authorAnna Schumaker <Anna.Schumaker@Netapp.com>
Wed, 11 Jan 2017 18:37:06 +0000 (13:37 -0500)
committerAnna Schumaker <Anna.Schumaker@Netapp.com>
Mon, 30 Jan 2017 18:14:50 +0000 (13:14 -0500)
This tracepoint displays information about the slot that was chosen for
the RPC, in addition to session information.  This could be useful
information for debugging, and we can set the session id hash to 0 to
indicate that there is no session.

Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
fs/nfs/nfs4proc.c
fs/nfs/nfs4session.h
fs/nfs/nfs4trace.h

index f6a362ffcbd466d18dbb8f21e8e3a0bfc1fbc23e..ae03f976fbd3320dee1e8bed91afa096439ececf 100644 (file)
@@ -924,11 +924,9 @@ int nfs4_setup_sequence(const struct nfs_client *client,
                res->sr_timestamp = jiffies;
                res->sr_status_flags = 0;
                res->sr_status = 1;
-#ifdef CONFIG_NFS_V4_1
-               trace_nfs4_setup_sequence(session, args);
-#endif /* CONFIG_NFS_V4_1 */
        }
 
+       trace_nfs4_setup_sequence(session, args);
 out_start:
        rpc_call_start(task);
        return 0;
index f6378d95b1b5f61d44c3a03a20a17af368232eb4..dfae4880eacb9884539d62cb2167a78f6429b7db 100644 (file)
@@ -175,6 +175,8 @@ static inline int nfs4_has_persistent_session(const struct nfs_client *clp)
        return 0;
 }
 
+#define nfs_session_id_hash(session) (0)
+
 #endif /* defined(CONFIG_NFS_V4_1) */
 #endif /* IS_ENABLED(CONFIG_NFS_V4) */
 #endif /* __LINUX_FS_NFS_NFS4SESSION_H */
index cfb8f7ce5cf6dbda09066ebc1cd21b0f6ee5757d..845d0eadefc94f48dc6410b3bbb3a0df89caca18 100644 (file)
@@ -241,38 +241,6 @@ DEFINE_NFS4_CLIENTID_EVENT(nfs4_bind_conn_to_session);
 DEFINE_NFS4_CLIENTID_EVENT(nfs4_sequence);
 DEFINE_NFS4_CLIENTID_EVENT(nfs4_reclaim_complete);
 
-TRACE_EVENT(nfs4_setup_sequence,
-               TP_PROTO(
-                       const struct nfs4_session *session,
-                       const struct nfs4_sequence_args *args
-               ),
-               TP_ARGS(session, args),
-
-               TP_STRUCT__entry(
-                       __field(unsigned int, session)
-                       __field(unsigned int, slot_nr)
-                       __field(unsigned int, seq_nr)
-                       __field(unsigned int, highest_used_slotid)
-               ),
-
-               TP_fast_assign(
-                       const struct nfs4_slot *sa_slot = args->sa_slot;
-                       __entry->session = nfs_session_id_hash(&session->sess_id);
-                       __entry->slot_nr = sa_slot->slot_nr;
-                       __entry->seq_nr = sa_slot->seq_nr;
-                       __entry->highest_used_slotid =
-                                       sa_slot->table->highest_used_slotid;
-               ),
-               TP_printk(
-                       "session=0x%08x slot_nr=%u seq_nr=%u "
-                       "highest_used_slotid=%u",
-                       __entry->session,
-                       __entry->slot_nr,
-                       __entry->seq_nr,
-                       __entry->highest_used_slotid
-               )
-);
-
 #define show_nfs4_sequence_status_flags(status) \
        __print_flags((unsigned long)status, "|", \
                { SEQ4_STATUS_CB_PATH_DOWN, "CB_PATH_DOWN" }, \
@@ -382,6 +350,38 @@ TRACE_EVENT(nfs4_cb_sequence,
 );
 #endif /* CONFIG_NFS_V4_1 */
 
+TRACE_EVENT(nfs4_setup_sequence,
+               TP_PROTO(
+                       const struct nfs4_session *session,
+                       const struct nfs4_sequence_args *args
+               ),
+               TP_ARGS(session, args),
+
+               TP_STRUCT__entry(
+                       __field(unsigned int, session)
+                       __field(unsigned int, slot_nr)
+                       __field(unsigned int, seq_nr)
+                       __field(unsigned int, highest_used_slotid)
+               ),
+
+               TP_fast_assign(
+                       const struct nfs4_slot *sa_slot = args->sa_slot;
+                       __entry->session = session ? nfs_session_id_hash(&session->sess_id) : 0;
+                       __entry->slot_nr = sa_slot->slot_nr;
+                       __entry->seq_nr = sa_slot->seq_nr;
+                       __entry->highest_used_slotid =
+                                       sa_slot->table->highest_used_slotid;
+               ),
+               TP_printk(
+                       "session=0x%08x slot_nr=%u seq_nr=%u "
+                       "highest_used_slotid=%u",
+                       __entry->session,
+                       __entry->slot_nr,
+                       __entry->seq_nr,
+                       __entry->highest_used_slotid
+               )
+);
+
 DECLARE_EVENT_CLASS(nfs4_open_event,
                TP_PROTO(
                        const struct nfs_open_context *ctx,