bcachefs: io_move_evacuate_bucket tracepoint, counter
authorKent Overstreet <kent.overstreet@linux.dev>
Wed, 28 May 2025 01:54:22 +0000 (21:54 -0400)
committerKent Overstreet <kent.overstreet@linux.dev>
Fri, 30 May 2025 05:21:12 +0000 (01:21 -0400)
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
fs/bcachefs/move.c
fs/bcachefs/sb-counters_format.h
fs/bcachefs/trace.h

index f67656fbd849acd63d4c879b05a6f10aa3a1a953..4dd779b7b6d27bfe84004568f87825451f132ae2 100644 (file)
@@ -95,6 +95,19 @@ trace_io_move_pred2(struct bch_fs *c, struct bkey_s_c k,
        printbuf_exit(&buf);
 }
 
+static noinline void
+trace_io_move_evacuate_bucket2(struct bch_fs *c, struct bpos bucket, int gen)
+{
+       struct printbuf buf = PRINTBUF;
+
+       prt_printf(&buf, "bucket: ");
+       bch2_bpos_to_text(&buf, bucket);
+       prt_printf(&buf, " gen: %i\n", gen);
+
+       trace_io_move_evacuate_bucket(c, buf.buf);
+       printbuf_exit(&buf);
+}
+
 struct moving_io {
        struct list_head                read_list;
        struct list_head                io_list;
@@ -1059,8 +1072,13 @@ int bch2_evacuate_bucket(struct moving_context *ctxt,
                         struct bpos bucket, int gen,
                         struct data_update_opts data_opts)
 {
+       struct bch_fs *c = ctxt->trans->c;
        struct evacuate_bucket_arg arg = { bucket, gen, data_opts, };
 
+       count_event(c, io_move_evacuate_bucket);
+       if (trace_io_move_evacuate_bucket_enabled())
+               trace_io_move_evacuate_bucket2(c, bucket, gen);
+
        return __bch2_move_data_phys(ctxt, bucket_in_flight,
                                   bucket.inode,
                                   bucket.offset,
index 7c0c9c842b4e7e34f617f59d5b8fa36a91124ae8..b868702a431a5ea59de4cfbc6d4c5aed57a9797d 100644 (file)
@@ -26,6 +26,7 @@ enum counters_flags {
        x(io_move_write_fail,                           82,     TYPE_COUNTER)   \
        x(io_move_start_fail,                           39,     TYPE_COUNTER)   \
        x(io_move_created_rebalance,                    83,     TYPE_COUNTER)   \
+       x(io_move_evacuate_bucket,                      84,     TYPE_COUNTER)   \
        x(bucket_invalidate,                            3,      TYPE_COUNTER)   \
        x(bucket_discard,                               4,      TYPE_COUNTER)   \
        x(bucket_discard_fast,                          79,     TYPE_COUNTER)   \
index 8f942913cec36915a8b7bfd582ac929a5280ae8c..eb3ca963fc58230fa7983fd5f2f6c3be5d8ed15b 100644 (file)
@@ -1441,6 +1441,11 @@ DEFINE_EVENT(fs_str, io_move_created_rebalance,
        TP_ARGS(c, str)
 );
 
+DEFINE_EVENT(fs_str, io_move_evacuate_bucket,
+       TP_PROTO(struct bch_fs *c, const char *str),
+       TP_ARGS(c, str)
+);
+
 TRACE_EVENT(error_downcast,
        TP_PROTO(int bch_err, int std_err, unsigned long ip),
        TP_ARGS(bch_err, std_err, ip),