diff options
| author | Filipe Manana <fdmanana@suse.com> | 2026-04-23 15:17:16 +0100 |
|---|---|---|
| committer | David Sterba <dsterba@suse.com> | 2026-06-08 15:53:33 +0200 |
| commit | b4bbe7d7591e65cf9cc4975ea124fc717df9f128 (patch) | |
| tree | ca7189cb2c501103b6d1f5092da96d5b5c555999 | |
| parent | 889ad3845a8c029e93a46251f78d61b277cf5e61 (diff) | |
btrfs: tracepoints: add trace event for transaction aborts
While tracing it's useful to know not just when a transaction is committed
but also when one is aborted. So add a trace event for transaction aborts.
Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
Signed-off-by: Filipe Manana <fdmanana@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
| -rw-r--r-- | fs/btrfs/transaction.c | 1 | ||||
| -rw-r--r-- | include/trace/events/btrfs.h | 22 |
2 files changed, 23 insertions, 0 deletions
diff --git a/fs/btrfs/transaction.c b/fs/btrfs/transaction.c index b98cb7b0630a..277953906b91 100644 --- a/fs/btrfs/transaction.c +++ b/fs/btrfs/transaction.c @@ -2731,6 +2731,7 @@ void __cold __btrfs_abort_transaction(struct btrfs_trans_handle *trans, WRITE_ONCE(trans->aborted, error); WRITE_ONCE(trans->transaction->aborted, error); + trace_btrfs_transaction_abort(trans); if (first_hit) { btrfs_err(fs_info, "Transaction %llu aborted (error %d)", trans->transid, error); diff --git a/include/trace/events/btrfs.h b/include/trace/events/btrfs.h index 4e077abd6704..cb9b6188fcdd 100644 --- a/include/trace/events/btrfs.h +++ b/include/trace/events/btrfs.h @@ -201,6 +201,28 @@ TRACE_EVENT(btrfs_transaction_commit, __entry->in_fsync) ); +TRACE_EVENT(btrfs_transaction_abort, + + TP_PROTO(const struct btrfs_trans_handle *trans), + + TP_ARGS(trans), + + TP_STRUCT__entry_btrfs( + __field( u64, generation ) + __field( bool, in_fsync ) + __field( int, error ) + ), + + TP_fast_assign_btrfs(trans->fs_info, + __entry->generation = trans->transid; + __entry->in_fsync = trans->in_fsync; + __entry->error = trans->aborted; + ), + + TP_printk_btrfs("gen=%llu in_fsync=%d error=%d", __entry->generation, + __entry->in_fsync, __entry->error) +); + DECLARE_EVENT_CLASS(btrfs__inode, TP_PROTO(const struct inode *inode), |
