Signed-off-by: Daniel Hill <[email protected]>
---
 fs/bcachefs/move.c  | 11 +++++++++--
 fs/bcachefs/trace.h | 12 +++++++++---
 2 files changed, 18 insertions(+), 5 deletions(-)

diff --git a/fs/bcachefs/move.c b/fs/bcachefs/move.c
index 40a8305b3860..fe8660ed50f7 100644
--- a/fs/bcachefs/move.c
+++ b/fs/bcachefs/move.c
@@ -711,8 +711,9 @@ int bch2_evacuate_bucket(struct moving_context *ctxt,
        u64 fragmentation;
        struct bpos bp_pos = POS_MIN;
        int ret = 0;
+       struct printbuf buf = PRINTBUF;
 
-       trace_bucket_evacuate(c, &bucket);
+       trace_evacuate_bucket_start(c, &bucket);
 
        bch2_bkey_buf_init(&sk);
 
@@ -843,8 +844,14 @@ int bch2_evacuate_bucket(struct moving_context *ctxt,
                bp_pos = bpos_nosnap_successor(bp_pos);
        }
 
-       trace_evacuate_bucket(c, &bucket, dirty_sectors, bucket_size, 
fragmentation, ret);
+       trace_evacuate_bucket_finish(c, &bucket, gen, dirty_sectors,
+                                    bucket_size, fragmentation, ret);
+       goto exit;
 err:
+       prt_printf(&buf, "%llu:%llu ret %s", bucket.inode, bucket.offset, 
bch2_err_str(ret));
+       trace_evacuate_bucket_fail(c, buf.buf);
+exit:
+       printbuf_exit(&buf);
        bch2_bkey_buf_exit(&sk, c);
        return ret;
 }
diff --git a/fs/bcachefs/trace.h b/fs/bcachefs/trace.h
index f48c727d89aa..51a1f47b310c 100644
--- a/fs/bcachefs/trace.h
+++ b/fs/bcachefs/trace.h
@@ -791,7 +791,7 @@ TRACE_EVENT(bucket_invalidate,
 
 /* Moving IO */
 
-TRACE_EVENT(bucket_evacuate,
+TRACE_EVENT(evacuate_bucket_start,
        TP_PROTO(struct bch_fs *c, struct bpos *bucket),
        TP_ARGS(c, bucket),
 
@@ -812,6 +812,11 @@ TRACE_EVENT(bucket_evacuate,
                  __entry->dev_idx, __entry->bucket)
 );
 
+DEFINE_EVENT(fs_str, evacuate_bucket_fail,
+            TP_PROTO(struct bch_fs *c, const char *k),
+            TP_ARGS(c, k)
+);
+
 DEFINE_EVENT(fs_str, move_extent,
        TP_PROTO(struct bch_fs *c, const char *str),
        TP_ARGS(c, str)
@@ -902,15 +907,16 @@ TRACE_EVENT(evacuate_bucket_finish,
                __entry->dev                    = c->dev;
                __entry->member                 = bucket->inode;
                __entry->bucket                 = bucket->offset;
+               __entry->gen                    = gen;
                __entry->sectors                = sectors;
                __entry->bucket_size            = bucket_size;
                __entry->fragmentation          = fragmentation;
                __entry->ret                    = ret;
        ),
 
-       TP_printk("%d,%d %llu:%llu sectors %u/%u fragmentation %llu ret %i",
+       TP_printk("%d,%d %llu:%llu gen %u sectors %u/%u fragmentation %llu ret 
%i",
                  MAJOR(__entry->dev), MINOR(__entry->dev),
-                 __entry->member, __entry->bucket,
+                 __entry->member, __entry->bucket, __entry->gen,
                  __entry->sectors, __entry->bucket_size,
                  __entry->fragmentation, __entry->ret)
 );
-- 
2.43.0


Reply via email to