提交 c9f6f3cd 编写于 作者: Q Qu Wenruo 提交者: David Sterba

btrfs: qgroup: Allow trace_btrfs_qgroup_account_extent() to record its transid

When debugging quota rescan race, some times btrfs rescan could account
some old (committed) leaf and then re-account newly committed leaf
in next generation.

This race needs extra transid to locate, so add @transid for
trace_btrfs_qgroup_account_extent() for such debug.
Signed-off-by: NQu Wenruo <wqu@suse.com>
Reviewed-by: NDavid Sterba <dsterba@suse.com>
Signed-off-by: NDavid Sterba <dsterba@suse.com>
上级 f5686e3a
...@@ -2014,8 +2014,8 @@ btrfs_qgroup_account_extent(struct btrfs_trans_handle *trans, ...@@ -2014,8 +2014,8 @@ btrfs_qgroup_account_extent(struct btrfs_trans_handle *trans,
BUG_ON(!fs_info->quota_root); BUG_ON(!fs_info->quota_root);
trace_btrfs_qgroup_account_extent(fs_info, bytenr, num_bytes, trace_btrfs_qgroup_account_extent(fs_info, trans->transid, bytenr,
nr_old_roots, nr_new_roots); num_bytes, nr_old_roots, nr_new_roots);
qgroups = ulist_alloc(GFP_NOFS); qgroups = ulist_alloc(GFP_NOFS);
if (!qgroups) { if (!qgroups) {
......
...@@ -1578,12 +1578,14 @@ DEFINE_EVENT(btrfs_qgroup_extent, btrfs_qgroup_trace_extent, ...@@ -1578,12 +1578,14 @@ DEFINE_EVENT(btrfs_qgroup_extent, btrfs_qgroup_trace_extent,
TRACE_EVENT(btrfs_qgroup_account_extent, TRACE_EVENT(btrfs_qgroup_account_extent,
TP_PROTO(const struct btrfs_fs_info *fs_info, u64 bytenr, TP_PROTO(const struct btrfs_fs_info *fs_info, u64 transid, u64 bytenr,
u64 num_bytes, u64 nr_old_roots, u64 nr_new_roots), u64 num_bytes, u64 nr_old_roots, u64 nr_new_roots),
TP_ARGS(fs_info, bytenr, num_bytes, nr_old_roots, nr_new_roots), TP_ARGS(fs_info, transid, bytenr, num_bytes, nr_old_roots,
nr_new_roots),
TP_STRUCT__entry_btrfs( TP_STRUCT__entry_btrfs(
__field( u64, transid )
__field( u64, bytenr ) __field( u64, bytenr )
__field( u64, num_bytes ) __field( u64, num_bytes )
__field( u64, nr_old_roots ) __field( u64, nr_old_roots )
...@@ -1591,14 +1593,16 @@ TRACE_EVENT(btrfs_qgroup_account_extent, ...@@ -1591,14 +1593,16 @@ TRACE_EVENT(btrfs_qgroup_account_extent,
), ),
TP_fast_assign_btrfs(fs_info, TP_fast_assign_btrfs(fs_info,
__entry->transid = transid;
__entry->bytenr = bytenr; __entry->bytenr = bytenr;
__entry->num_bytes = num_bytes; __entry->num_bytes = num_bytes;
__entry->nr_old_roots = nr_old_roots; __entry->nr_old_roots = nr_old_roots;
__entry->nr_new_roots = nr_new_roots; __entry->nr_new_roots = nr_new_roots;
), ),
TP_printk_btrfs("bytenr=%llu num_bytes=%llu nr_old_roots=%llu " TP_printk_btrfs(
"nr_new_roots=%llu", "transid=%llu bytenr=%llu num_bytes=%llu nr_old_roots=%llu nr_new_roots=%llu",
__entry->transid,
__entry->bytenr, __entry->bytenr,
__entry->num_bytes, __entry->num_bytes,
__entry->nr_old_roots, __entry->nr_old_roots,
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册