btrfs: enable a tracepoint when we fail tickets
authorJosef Bacik <josef@toxicpanda.com>
Wed, 14 Jul 2021 18:47:19 +0000 (14:47 -0400)
committerDavid Sterba <dsterba@suse.com>
Mon, 23 Aug 2021 11:19:06 +0000 (13:19 +0200)
When debugging early enospc problems it was useful to have a tracepoint
where we failed all tickets so I could check the state of the enospc
counters at failure time to validate my fixes.  This adds the tracpoint
so you can easily get that information.

Reviewed-by: Nikolay Borisov <nborisov@suse.com>
Signed-off-by: Josef Bacik <josef@toxicpanda.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/space-info.c
include/trace/events/btrfs.h

index f79bf85..fbd492f 100644 (file)
@@ -824,6 +824,8 @@ static bool maybe_fail_all_tickets(struct btrfs_fs_info *fs_info,
        struct reserve_ticket *ticket;
        u64 tickets_id = space_info->tickets_id;
 
+       trace_btrfs_fail_all_tickets(fs_info, space_info);
+
        if (btrfs_test_opt(fs_info, ENOSPC_DEBUG)) {
                btrfs_info(fs_info, "cannot satisfy tickets, dumping space info");
                __btrfs_dump_space_info(fs_info, space_info);
index 97e16a3..c7d19ea 100644 (file)
@@ -2104,6 +2104,12 @@ DEFINE_EVENT(btrfs_dump_space_info, btrfs_done_preemptive_reclaim,
        TP_ARGS(fs_info, sinfo)
 );
 
+DEFINE_EVENT(btrfs_dump_space_info, btrfs_fail_all_tickets,
+       TP_PROTO(struct btrfs_fs_info *fs_info,
+                const struct btrfs_space_info *sinfo),
+       TP_ARGS(fs_info, sinfo)
+);
+
 TRACE_EVENT(btrfs_reserve_ticket,
        TP_PROTO(const struct btrfs_fs_info *fs_info, u64 flags, u64 bytes,
                 u64 start_ns, int flush, int error),