bcachefs: Improve bucket_alloc tracepoint
authorKent Overstreet <kent.overstreet@linux.dev>
Mon, 26 Sep 2022 22:18:00 +0000 (18:18 -0400)
committerKent Overstreet <kent.overstreet@linux.dev>
Sun, 22 Oct 2023 21:09:42 +0000 (17:09 -0400)
It now includes more info - whether the bucket was for metadata or data
- and also call it in the same place as the bucket_alloc_fail
tracepoint.

Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
fs/bcachefs/alloc_foreground.c
fs/bcachefs/trace.h

index e890b09f80c619707939b4bf6db0ccc0c4f63312..0525a4ee0dd128d9597268f977a97ed1884d04bc 100644 (file)
@@ -587,6 +587,8 @@ err:
        if (!IS_ERR(ob))
                trace_and_count(c, bucket_alloc, ca,
                                bch2_alloc_reserves[reserve],
+                               may_alloc_partial,
+                               ob->bucket,
                                usage.d[BCH_DATA_free].buckets,
                                avail,
                                bch2_copygc_wait_amount(c),
@@ -600,6 +602,8 @@ err:
        else
                trace_and_count(c, bucket_alloc_fail, ca,
                                bch2_alloc_reserves[reserve],
+                               may_alloc_partial,
+                               0,
                                usage.d[BCH_DATA_free].buckets,
                                avail,
                                bch2_copygc_wait_amount(c),
index 69e142d8b651c2ae843e6a408de525374f86b1b3..24d089507a21e985f3f29a55079ed9a5ab3e7d79 100644 (file)
@@ -512,6 +512,8 @@ DEFINE_EVENT(bch_fs, gc_gens_end,
 
 DECLARE_EVENT_CLASS(bucket_alloc,
        TP_PROTO(struct bch_dev *ca, const char *alloc_reserve,
+                bool user,
+                u64 bucket,
                 u64 free,
                 u64 avail,
                 u64 copygc_wait_amount,
@@ -522,12 +524,15 @@ DECLARE_EVENT_CLASS(bucket_alloc,
                 u64 nouse,
                 bool nonblocking,
                 const char *err),
-       TP_ARGS(ca, alloc_reserve, free, avail, copygc_wait_amount, copygc_waiting_for,
+       TP_ARGS(ca, alloc_reserve, user, bucket, free, avail,
+               copygc_wait_amount, copygc_waiting_for,
                seen, open, need_journal_commit, nouse, nonblocking, err),
 
        TP_STRUCT__entry(
                __field(dev_t,                  dev                     )
                __array(char,   reserve,        16                      )
+               __field(bool,                   user    )
+               __field(u64,                    bucket  )
                __field(u64,                    free                    )
                __field(u64,                    avail                   )
                __field(u64,                    copygc_wait_amount      )
@@ -537,12 +542,14 @@ DECLARE_EVENT_CLASS(bucket_alloc,
                __field(u64,                    need_journal_commit     )
                __field(u64,                    nouse                   )
                __field(bool,                   nonblocking             )
-               __array(char,                   err,    16              )
+               __array(char,                   err,    32              )
        ),
 
        TP_fast_assign(
                __entry->dev            = ca->dev;
                strlcpy(__entry->reserve, alloc_reserve, sizeof(__entry->reserve));
+               __entry->user           = user;
+               __entry->bucket         = bucket;
                __entry->free           = free;
                __entry->avail          = avail;
                __entry->copygc_wait_amount     = copygc_wait_amount;
@@ -555,9 +562,11 @@ DECLARE_EVENT_CLASS(bucket_alloc,
                strlcpy(__entry->err, err, sizeof(__entry->err));
        ),
 
-       TP_printk("%d,%d reserve %s free %llu avail %llu copygc_wait %llu/%lli seen %llu open %llu need_journal_commit %llu nouse %llu nonblocking %u err %s",
+       TP_printk("%d,%d reserve %s user %u bucket %llu free %llu avail %llu copygc_wait %llu/%lli seen %llu open %llu need_journal_commit %llu nouse %llu nonblocking %u err %s",
                  MAJOR(__entry->dev), MINOR(__entry->dev),
                  __entry->reserve,
+                 __entry->user,
+                 __entry->bucket,
                  __entry->free,
                  __entry->avail,
                  __entry->copygc_wait_amount,
@@ -572,6 +581,8 @@ DECLARE_EVENT_CLASS(bucket_alloc,
 
 DEFINE_EVENT(bucket_alloc, bucket_alloc,
        TP_PROTO(struct bch_dev *ca, const char *alloc_reserve,
+                bool user,
+                u64 bucket,
                 u64 free,
                 u64 avail,
                 u64 copygc_wait_amount,
@@ -582,12 +593,15 @@ DEFINE_EVENT(bucket_alloc, bucket_alloc,
                 u64 nouse,
                 bool nonblocking,
                 const char *err),
-       TP_ARGS(ca, alloc_reserve, free, avail, copygc_wait_amount, copygc_waiting_for,
+       TP_ARGS(ca, alloc_reserve, user, bucket, free, avail,
+               copygc_wait_amount, copygc_waiting_for,
                seen, open, need_journal_commit, nouse, nonblocking, err)
 );
 
 DEFINE_EVENT(bucket_alloc, bucket_alloc_fail,
        TP_PROTO(struct bch_dev *ca, const char *alloc_reserve,
+                bool user,
+                u64 bucket,
                 u64 free,
                 u64 avail,
                 u64 copygc_wait_amount,
@@ -598,7 +612,8 @@ DEFINE_EVENT(bucket_alloc, bucket_alloc_fail,
                 u64 nouse,
                 bool nonblocking,
                 const char *err),
-       TP_ARGS(ca, alloc_reserve, free, avail, copygc_wait_amount, copygc_waiting_for,
+       TP_ARGS(ca, alloc_reserve, user, bucket, free, avail,
+               copygc_wait_amount, copygc_waiting_for,
                seen, open, need_journal_commit, nouse, nonblocking, err)
 );