btrfs: tracepoints: add events for raid stripe tree
authorJohannes Thumshirn <johannes.thumshirn@wdc.com>
Thu, 14 Sep 2023 16:07:05 +0000 (09:07 -0700)
committerDavid Sterba <dsterba@suse.com>
Thu, 12 Oct 2023 14:44:10 +0000 (16:44 +0200)
Add trace events for raid-stripe-tree operations.

Signed-off-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/raid-stripe-tree.c
include/trace/events/btrfs.h

index a4451452ab680c7f479e2be22181ad33eb648c4f..944e8f1862aaaa69aec78c0de74ad6e9b1f42de6 100644 (file)
@@ -59,6 +59,9 @@ int btrfs_delete_raid_extent(struct btrfs_trans_handle *trans, u64 start, u64 le
                if (found_end <= start)
                        break;
 
+               trace_btrfs_raid_extent_delete(fs_info, start, end,
+                                              found_start, found_end);
+
                ASSERT(found_start >= start && found_end <= end);
                ret = btrfs_del_item(trans, stripe_root, path);
                if (ret)
@@ -90,6 +93,8 @@ static int btrfs_insert_one_raid_extent(struct btrfs_trans_handle *trans,
                return -ENOMEM;
        }
 
+       trace_btrfs_insert_one_raid_extent(fs_info, bioc->logical, bioc->size,
+                                          num_stripes);
        btrfs_set_stack_stripe_extent_encoding(stripe_extent, encoding);
        for (int i = 0; i < num_stripes; i++) {
                u64 devid = bioc->stripes[i].dev->devid;
@@ -242,6 +247,9 @@ int btrfs_get_raid_extent_offset(struct btrfs_fs_info *fs_info,
 
                stripe->physical = physical + offset;
 
+               trace_btrfs_get_raid_extent_offset(fs_info, logical, *length,
+                                                  stripe->physical, devid);
+
                ret = 0;
                goto free_path;
        }
index b2db2c2f1c577d373368414e3991af84ad1a2025..638412ab090d2a00ff87a707dc225263cf8fd4fb 100644 (file)
@@ -2497,6 +2497,82 @@ DEFINE_EVENT(btrfs_raid56_bio, raid56_write,
        TP_ARGS(rbio, bio, trace_info)
 );
 
+TRACE_EVENT(btrfs_insert_one_raid_extent,
+
+       TP_PROTO(const struct btrfs_fs_info *fs_info, u64 logical, u64 length,
+                int num_stripes),
+
+       TP_ARGS(fs_info, logical, length, num_stripes),
+
+       TP_STRUCT__entry_btrfs(
+               __field(        u64,    logical         )
+               __field(        u64,    length          )
+               __field(        int,    num_stripes     )
+       ),
+
+       TP_fast_assign_btrfs(fs_info,
+               __entry->logical        = logical;
+               __entry->length         = length;
+               __entry->num_stripes    = num_stripes;
+       ),
+
+       TP_printk_btrfs("logical=%llu length=%llu num_stripes=%d",
+                       __entry->logical, __entry->length,
+                       __entry->num_stripes)
+);
+
+TRACE_EVENT(btrfs_raid_extent_delete,
+
+       TP_PROTO(const struct btrfs_fs_info *fs_info, u64 start, u64 end,
+                u64 found_start, u64 found_end),
+
+       TP_ARGS(fs_info, start, end, found_start, found_end),
+
+       TP_STRUCT__entry_btrfs(
+               __field(        u64,    start           )
+               __field(        u64,    end             )
+               __field(        u64,    found_start     )
+               __field(        u64,    found_end       )
+       ),
+
+       TP_fast_assign_btrfs(fs_info,
+               __entry->start          = start;
+               __entry->end            = end;
+               __entry->found_start    = found_start;
+               __entry->found_end      = found_end;
+       ),
+
+       TP_printk_btrfs("start=%llu end=%llu found_start=%llu found_end=%llu",
+                       __entry->start, __entry->end, __entry->found_start,
+                       __entry->found_end)
+);
+
+TRACE_EVENT(btrfs_get_raid_extent_offset,
+
+       TP_PROTO(const struct btrfs_fs_info *fs_info, u64 logical, u64 length,
+                u64 physical, u64 devid),
+
+       TP_ARGS(fs_info, logical, length, physical, devid),
+
+       TP_STRUCT__entry_btrfs(
+               __field(        u64,    logical         )
+               __field(        u64,    length          )
+               __field(        u64,    physical        )
+               __field(        u64,    devid           )
+       ),
+
+       TP_fast_assign_btrfs(fs_info,
+               __entry->logical        = logical;
+               __entry->length         = length;
+               __entry->physical       = physical;
+               __entry->devid          = devid;
+       ),
+
+       TP_printk_btrfs("logical=%llu length=%llu physical=%llu devid=%llu",
+                       __entry->logical, __entry->length, __entry->physical,
+                       __entry->devid)
+);
+
 #endif /* _TRACE_BTRFS_H */
 
 /* This part must be outside protection */