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