Signed-off-by: Daniel Hill <[email protected]>
---
 fs/bcachefs/movinggc.c | 11 ++++---
 fs/bcachefs/trace.h    | 69 +++++++++++++++++++++++++++++++-----------
 2 files changed, 59 insertions(+), 21 deletions(-)

diff --git a/fs/bcachefs/movinggc.c b/fs/bcachefs/movinggc.c
index 69e06a84dad4..7ecb3009bed3 100644
--- a/fs/bcachefs/movinggc.c
+++ b/fs/bcachefs/movinggc.c
@@ -188,9 +188,8 @@ static int bch2_copygc_get_buckets(struct moving_context 
*ctxt,
                ret2;
        }));
 
-       pr_debug("have: %zu (%zu) saw %zu in flight %zu not movable %zu got %zu 
(%zu)/%zu buckets ret %i",
-                buckets_in_flight->nr, buckets_in_flight->sectors,
-                saw, in_flight, not_movable, buckets->nr, sectors, nr_to_get, 
ret);
+       trace_copygc_get_buckets(c, buckets_in_flight->nr, nr_to_get, saw,
+                                not_movable, in_flight, buckets->nr, ret);
 
        return ret < 0 ? ret : 0;
 }
@@ -208,6 +207,8 @@ static int bch2_copygc(struct moving_context *ctxt,
        move_buckets buckets = { 0 };
        struct move_bucket_in_flight *f;
        u64 moved = atomic64_read(&ctxt->stats->sectors_moved);
+       u64 raced = atomic64_read(&ctxt->stats->sectors_raced);
+       u64 seen = atomic64_read(&ctxt->stats->sectors_seen);
        int ret = 0;
 
        ret = bch2_copygc_get_buckets(ctxt, buckets_in_flight, &buckets);
@@ -247,7 +248,9 @@ static int bch2_copygc(struct moving_context *ctxt,
                bch_err_msg(c, ret, "from bch2_move_data()");
 
        moved = atomic64_read(&ctxt->stats->sectors_moved) - moved;
-       trace_and_count(c, copygc, c, moved, 0, 0, 0);
+       seen  = atomic64_read(&ctxt->stats->sectors_seen)  - seen;
+       raced = atomic64_read(&ctxt->stats->sectors_raced) - raced;
+       trace_and_count(c, copygc, c, moved, seen, raced);
        return ret;
 }
 
diff --git a/fs/bcachefs/trace.h b/fs/bcachefs/trace.h
index 51a1f47b310c..3876be978958 100644
--- a/fs/bcachefs/trace.h
+++ b/fs/bcachefs/trace.h
@@ -923,32 +923,30 @@ TRACE_EVENT(evacuate_bucket_finish,
 
 TRACE_EVENT(copygc,
        TP_PROTO(struct bch_fs *c,
-                u64 sectors_moved, u64 sectors_not_moved,
-                u64 buckets_moved, u64 buckets_not_moved),
+                u64 sectors_moved, u64 sectors_seen,
+                u64 sectors_raced),
        TP_ARGS(c,
-               sectors_moved, sectors_not_moved,
-               buckets_moved, buckets_not_moved),
+               sectors_moved, sectors_seen,
+               sectors_raced),
 
        TP_STRUCT__entry(
-               __field(dev_t,          dev                     )
-               __field(u64,            sectors_moved           )
-               __field(u64,            sectors_not_moved       )
-               __field(u64,            buckets_moved           )
-               __field(u64,            buckets_not_moved       )
+               __field(dev_t,          dev             )
+               __field(u64,            sectors_moved   )
+               __field(u64,            sectors_seen    )
+               __field(u64,            sectors_raced   )
        ),
 
        TP_fast_assign(
-               __entry->dev                    = c->dev;
-               __entry->sectors_moved          = sectors_moved;
-               __entry->sectors_not_moved      = sectors_not_moved;
-               __entry->buckets_moved          = buckets_moved;
-               __entry->buckets_not_moved = buckets_moved;
+               __entry->dev            = c->dev;
+               __entry->sectors_moved  = sectors_moved;
+               __entry->sectors_seen   = sectors_seen;
+               __entry->sectors_raced  = sectors_raced;
        ),
 
-       TP_printk("%d,%d sectors moved %llu remain %llu buckets moved %llu 
remain %llu",
+       TP_printk("%d,%d sectors: moved %llu seen %llu raced %llu",
                  MAJOR(__entry->dev), MINOR(__entry->dev),
-                 __entry->sectors_moved, __entry->sectors_not_moved,
-                 __entry->buckets_moved, __entry->buckets_not_moved)
+                 __entry->sectors_moved, __entry->sectors_seen,
+                 __entry->sectors_raced)
 );
 
 TRACE_EVENT(copygc_wait,
@@ -973,6 +971,43 @@ TRACE_EVENT(copygc_wait,
                  __entry->wait_amount, __entry->until)
 );
 
+TRACE_EVENT(copygc_get_buckets,
+       TP_PROTO(struct bch_fs *c, u64 nr_in_flight, u64 nr_to_get,
+                u64 saw, u64 not_movable, u64 in_flight, u64 nr_buckets,
+                int ret),
+       TP_ARGS(c, nr_in_flight, nr_to_get, saw, not_movable, in_flight,
+               nr_buckets, ret),
+
+       TP_STRUCT__entry(
+               __field(dev_t,          dev                     )
+               __field(u64,            nr_in_flight            )
+               __field(u64,            nr_to_get               )
+               __field(u64,            saw                     )
+               __field(u64,            not_movable             )
+               __field(u64,            in_flight               )
+               __field(u64,            nr_buckets              )
+               __field(int,            ret                     )
+       ),
+
+       TP_fast_assign(
+               __entry->dev            = c->dev;
+               __entry->nr_in_flight   = nr_in_flight;
+               __entry->nr_to_get      = nr_to_get;
+               __entry->saw            = saw;
+               __entry->not_movable    = not_movable;
+               __entry->in_flight      = in_flight;
+               __entry->nr_buckets     = nr_buckets;
+               __entry->ret            = ret;
+       ),
+
+       TP_printk("dev %d,%u buckets_in_flight %llu nr_to_get %llu saw %llu 
not_movable %llu "
+                 "in_flight %llu move_buckets %llu ret %d",
+                 MAJOR(__entry->dev), MINOR(__entry->dev),
+                 __entry->nr_in_flight, __entry->nr_to_get, __entry->saw,
+                 __entry->not_movable, __entry->in_flight, __entry->nr_buckets,
+                 __entry->ret)
+);
+
 /* btree transactions: */
 
 DECLARE_EVENT_CLASS(transaction_event,
-- 
2.43.0


Reply via email to