jbd2: Provide trace event for handle restarts
authorJan Kara <jack@suse.cz>
Tue, 5 Nov 2019 16:44:30 +0000 (17:44 +0100)
committerTheodore Ts'o <tytso@mit.edu>
Tue, 5 Nov 2019 21:00:49 +0000 (16:00 -0500)
Provide trace event for handle restarts to ease debugging.

Reviewed-by: Theodore Ts'o <tytso@mit.edu>
Signed-off-by: Jan Kara <jack@suse.cz>
Link: https://lore.kernel.org/r/20191105164437.32602-24-jack@suse.cz
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
fs/jbd2/transaction.c
include/trace/events/jbd2.h

index 8f11b2d48ca0e9f1a2db3cc806e12e6a7522c01e..a3374c1a3d411a79ec78e0d76c9df51a1529aed0 100644 (file)
@@ -747,6 +747,7 @@ int jbd2__journal_restart(handle_t *handle, int nblocks, int revoke_records,
        journal_t *journal;
        tid_t           tid;
        int             need_to_start;
+       int             ret;
 
        /* If we've had an abort of any type, don't even think about
         * actually doing the restart! */
@@ -776,7 +777,12 @@ int jbd2__journal_restart(handle_t *handle, int nblocks, int revoke_records,
                DIV_ROUND_UP(revoke_records,
                             journal->j_revoke_records_per_block);
        handle->h_revoke_credits = revoke_records;
-       return start_this_handle(journal, handle, gfp_mask);
+       ret = start_this_handle(journal, handle, gfp_mask);
+       trace_jbd2_handle_restart(journal->j_fs_dev->bd_dev,
+                                ret ? 0 : handle->h_transaction->t_tid,
+                                handle->h_type, handle->h_line_no,
+                                handle->h_total_credits);
+       return ret;
 }
 EXPORT_SYMBOL(jbd2__journal_restart);
 
index 2310b259329fb53cf3f94417781c98f517facc1e..d16a32867f3a64b4364f5efe2dc40f6c27d28caf 100644 (file)
@@ -133,7 +133,7 @@ TRACE_EVENT(jbd2_submit_inode_data,
                  (unsigned long) __entry->ino)
 );
 
-TRACE_EVENT(jbd2_handle_start,
+DECLARE_EVENT_CLASS(jbd2_handle_start_class,
        TP_PROTO(dev_t dev, unsigned long tid, unsigned int type,
                 unsigned int line_no, int requested_blocks),
 
@@ -161,6 +161,20 @@ TRACE_EVENT(jbd2_handle_start,
                  __entry->type, __entry->line_no, __entry->requested_blocks)
 );
 
+DEFINE_EVENT(jbd2_handle_start_class, jbd2_handle_start,
+       TP_PROTO(dev_t dev, unsigned long tid, unsigned int type,
+                unsigned int line_no, int requested_blocks),
+
+       TP_ARGS(dev, tid, type, line_no, requested_blocks)
+);
+
+DEFINE_EVENT(jbd2_handle_start_class, jbd2_handle_restart,
+       TP_PROTO(dev_t dev, unsigned long tid, unsigned int type,
+                unsigned int line_no, int requested_blocks),
+
+       TP_ARGS(dev, tid, type, line_no, requested_blocks)
+);
+
 TRACE_EVENT(jbd2_handle_extend,
        TP_PROTO(dev_t dev, unsigned long tid, unsigned int type,
                 unsigned int line_no, int buffer_credits,