summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKent Overstreet <kent.overstreet@gmail.com>2021-05-26 01:03:35 -0400
committerKent Overstreet <kent.overstreet@gmail.com>2021-05-26 01:03:53 -0400
commit1e5e0932bb13ae70b8e414e3eab8cbd296aa2692 (patch)
tree92c59b9b4c6b260816e28248339a86bd619861cf
parentadc9a87e10945b0fc602d3423822c9d5f41000e9 (diff)
bcachefs: Add a tracepoint for copygc waiting
Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com>
-rw-r--r--fs/bcachefs/movinggc.c1
-rw-r--r--include/trace/events/bcachefs.h21
2 files changed, 22 insertions, 0 deletions
diff --git a/fs/bcachefs/movinggc.c b/fs/bcachefs/movinggc.c
index 0963c4969421..2acca0ddb6fd 100644
--- a/fs/bcachefs/movinggc.c
+++ b/fs/bcachefs/movinggc.c
@@ -326,6 +326,7 @@ static int bch2_copygc_thread(void *arg)
wait = bch2_copygc_wait_amount(c);
if (wait > clock->max_slop) {
+ trace_copygc_wait(c, wait, last + wait);
c->copygc_wait = last + wait;
bch2_kthread_io_clock_wait(clock, last + wait,
MAX_SCHEDULE_TIMEOUT);
diff --git a/include/trace/events/bcachefs.h b/include/trace/events/bcachefs.h
index c79338c8ebf7..1246ba94319d 100644
--- a/include/trace/events/bcachefs.h
+++ b/include/trace/events/bcachefs.h
@@ -528,6 +528,27 @@ TRACE_EVENT(copygc,
__entry->buckets_moved, __entry->buckets_not_moved)
);
+TRACE_EVENT(copygc_wait,
+ TP_PROTO(struct bch_fs *c,
+ u64 wait_amount, u64 until),
+ TP_ARGS(c, wait_amount, until),
+
+ TP_STRUCT__entry(
+ __array(char, uuid, 16 )
+ __field(u64, wait_amount )
+ __field(u64, until )
+ ),
+
+ TP_fast_assign(
+ memcpy(__entry->uuid, c->sb.user_uuid.b, 16);
+ __entry->wait_amount = wait_amount;
+ __entry->until = until;
+ ),
+
+ TP_printk("%pU waiting for %llu sectors until %llu",
+ __entry->uuid, __entry->wait_amount, __entry->until)
+);
+
TRACE_EVENT(trans_get_iter,
TP_PROTO(unsigned long caller, unsigned long ip,
enum btree_id btree_id,