diff options
| -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), |
