btrfs: qgroup: Allow trace_btrfs_qgroup_account_extent() to record its transid
authorQu Wenruo <wqu@suse.com>
Thu, 3 May 2018 01:59:02 +0000 (09:59 +0800)
committerDavid Sterba <dsterba@suse.com>
Mon, 28 May 2018 16:07:30 +0000 (18:07 +0200)
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: Qu Wenruo <wqu@suse.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/qgroup.c
include/trace/events/btrfs.h

index ec2339a..9fdac5b 100644 (file)
@@ -2014,8 +2014,8 @@ btrfs_qgroup_account_extent(struct btrfs_trans_handle *trans,
 
        BUG_ON(!fs_info->quota_root);
 
-       trace_btrfs_qgroup_account_extent(fs_info, bytenr, num_bytes,
-                                         nr_old_roots, nr_new_roots);
+       trace_btrfs_qgroup_account_extent(fs_info, trans->transid, bytenr,
+                                       num_bytes, nr_old_roots, nr_new_roots);
 
        qgroups = ulist_alloc(GFP_NOFS);
        if (!qgroups) {
index 29f9b14..39b94ec 100644 (file)
@@ -1578,12 +1578,14 @@ DEFINE_EVENT(btrfs_qgroup_extent, btrfs_qgroup_trace_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),
 
-       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(
+               __field(        u64,  transid                   )
                __field(        u64,  bytenr                    )
                __field(        u64,  num_bytes                 )
                __field(        u64,  nr_old_roots              )
@@ -1591,18 +1593,20 @@ TRACE_EVENT(btrfs_qgroup_account_extent,
        ),
 
        TP_fast_assign_btrfs(fs_info,
+               __entry->transid        = transid;
                __entry->bytenr         = bytenr;
                __entry->num_bytes      = num_bytes;
                __entry->nr_old_roots   = nr_old_roots;
                __entry->nr_new_roots   = nr_new_roots;
        ),
 
-       TP_printk_btrfs("bytenr=%llu num_bytes=%llu nr_old_roots=%llu "
-                 "nr_new_roots=%llu",
-                 __entry->bytenr,
-                 __entry->num_bytes,
-                 __entry->nr_old_roots,
-                 __entry->nr_new_roots)
+       TP_printk_btrfs(
+"transid=%llu bytenr=%llu num_bytes=%llu nr_old_roots=%llu nr_new_roots=%llu",
+               __entry->transid,
+               __entry->bytenr,
+               __entry->num_bytes,
+               __entry->nr_old_roots,
+               __entry->nr_new_roots)
 );
 
 TRACE_EVENT(qgroup_update_counters,