mirror of
https://github.com/torvalds/linux.git
synced 2026-07-29 02:31:27 +02:00
btrfs: tracepoints: add trace event for log_conflicting_inodes()
log_conflicting_inodes() is an important step called during a fsync, as well as during rename and link operations on inodes that were previously logged. Add trace events for when entering and exiting that function. Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com> Signed-off-by: Filipe Manana <fdmanana@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
parent
aa0487b003
commit
aba309b893
|
|
@ -6261,7 +6261,15 @@ static int log_conflicting_inodes(struct btrfs_trans_handle *trans,
|
|||
if (ctx->logging_conflict_inodes)
|
||||
return 0;
|
||||
|
||||
/*
|
||||
* Avoid any work if no conflicting inodes and emitting the trace event
|
||||
* which only adds noise and it's useless if there are no inodes.
|
||||
*/
|
||||
if (list_empty(&ctx->conflict_inodes))
|
||||
return 0;
|
||||
|
||||
ctx->logging_conflict_inodes = true;
|
||||
trace_btrfs_log_conflicting_inodes_enter(trans, ctx);
|
||||
|
||||
/*
|
||||
* New conflicting inodes may be found and added to the list while we
|
||||
|
|
@ -6355,6 +6363,7 @@ static int log_conflicting_inodes(struct btrfs_trans_handle *trans,
|
|||
ctx->logging_conflict_inodes = false;
|
||||
if (ret)
|
||||
free_conflicting_inodes(ctx);
|
||||
trace_btrfs_log_conflicting_inodes_exit(trans, ctx, ret);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1294,6 +1294,59 @@ TRACE_EVENT(btrfs_add_conflicting_inode_exit,
|
|||
__entry->conflict_ino_parent, __entry->ret)
|
||||
);
|
||||
|
||||
TRACE_EVENT(btrfs_log_conflicting_inodes_enter,
|
||||
|
||||
TP_PROTO(const struct btrfs_trans_handle *trans,
|
||||
const struct btrfs_log_ctx *ctx),
|
||||
|
||||
TP_ARGS(trans, ctx),
|
||||
|
||||
TP_STRUCT__entry_btrfs(
|
||||
__field( u64, root_objectid )
|
||||
__field( u64, transid )
|
||||
__field( u64, ctx_ino )
|
||||
),
|
||||
|
||||
TP_fast_assign(
|
||||
TP_fast_assign_fsid(trans->fs_info);
|
||||
__entry->root_objectid = btrfs_root_id(ctx->inode->root);
|
||||
__entry->transid = trans->transid;
|
||||
__entry->ctx_ino = btrfs_ino(ctx->inode);
|
||||
),
|
||||
|
||||
TP_printk_btrfs("root=%llu(%s) transid=%llu ctx_ino=%llu",
|
||||
show_root_type(__entry->root_objectid), __entry->transid,
|
||||
__entry->ctx_ino)
|
||||
);
|
||||
|
||||
TRACE_EVENT(btrfs_log_conflicting_inodes_exit,
|
||||
|
||||
TP_PROTO(const struct btrfs_trans_handle *trans,
|
||||
const struct btrfs_log_ctx *ctx,
|
||||
int ret),
|
||||
|
||||
TP_ARGS(trans, ctx, ret),
|
||||
|
||||
TP_STRUCT__entry_btrfs(
|
||||
__field( u64, root_objectid )
|
||||
__field( u64, transid )
|
||||
__field( u64, ctx_ino )
|
||||
__field( int, ret )
|
||||
),
|
||||
|
||||
TP_fast_assign(
|
||||
TP_fast_assign_fsid(trans->fs_info);
|
||||
__entry->root_objectid = btrfs_root_id(ctx->inode->root);
|
||||
__entry->transid = trans->transid;
|
||||
__entry->ctx_ino = btrfs_ino(ctx->inode);
|
||||
__entry->ret = ret;
|
||||
),
|
||||
|
||||
TP_printk_btrfs("root=%llu(%s) transid=%llu ctx_ino=%llu ret=%d",
|
||||
show_root_type(__entry->root_objectid), __entry->transid,
|
||||
__entry->ctx_ino, __entry->ret)
|
||||
);
|
||||
|
||||
TRACE_EVENT(btrfs_sync_fs,
|
||||
|
||||
TP_PROTO(const struct btrfs_fs_info *fs_info, int wait),
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user