diff options
author | Kent Overstreet <kent.overstreet@linux.dev> | 2022-09-27 01:18:00 +0300 |
---|---|---|
committer | Kent Overstreet <kent.overstreet@linux.dev> | 2023-10-23 00:09:42 +0300 |
commit | 68b6cd194ab23d0696a9d7adb024eabca95d4920 (patch) | |
tree | 793c109e27ad1f9b247732ce13a85fb01b330d0e | |
parent | c298fd7d346f5a7c55c4f1d01f97fbd39da9ff53 (diff) | |
download | linux-68b6cd194ab23d0696a9d7adb024eabca95d4920.tar.xz |
bcachefs: Improve bucket_alloc tracepoint
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>
-rw-r--r-- | fs/bcachefs/alloc_foreground.c | 4 | ||||
-rw-r--r-- | fs/bcachefs/trace.h | 25 |
2 files changed, 24 insertions, 5 deletions
diff --git a/fs/bcachefs/alloc_foreground.c b/fs/bcachefs/alloc_foreground.c index e890b09f80c6..0525a4ee0dd1 100644 --- a/fs/bcachefs/alloc_foreground.c +++ b/fs/bcachefs/alloc_foreground.c @@ -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), diff --git a/fs/bcachefs/trace.h b/fs/bcachefs/trace.h index 69e142d8b651..24d089507a21 100644 --- a/fs/bcachefs/trace.h +++ b/fs/bcachefs/trace.h @@ -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) ); |