]> www.infradead.org Git - users/willy/pagecache.git/commitdiff
bcachefs: Fix trace_copygc
authorKent Overstreet <kent.overstreet@linux.dev>
Fri, 17 Jan 2025 17:51:51 +0000 (12:51 -0500)
committerKent Overstreet <kent.overstreet@linux.dev>
Mon, 27 Jan 2025 04:02:28 +0000 (23:02 -0500)
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
fs/bcachefs/movinggc.c
fs/bcachefs/trace.h

index 85c361e78ba5313b65352e8e3274352d7c3c2fa5..21805509ab9e6b7e76f906943da9ec74d4718673 100644 (file)
@@ -215,7 +215,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 sectors_seen        = atomic64_read(&ctxt->stats->sectors_seen);
+       u64 sectors_moved       = atomic64_read(&ctxt->stats->sectors_moved);
        int ret = 0;
 
        ret = bch2_copygc_get_buckets(ctxt, buckets_in_flight, &buckets);
@@ -245,7 +246,6 @@ static int bch2_copygc(struct moving_context *ctxt,
                *did_work = true;
        }
 err:
-       darray_exit(&buckets);
 
        /* no entries in LRU btree found, or got to end: */
        if (bch2_err_matches(ret, ENOENT))
@@ -254,8 +254,11 @@ err:
        if (ret < 0 && !bch2_err_matches(ret, EROFS))
                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);
+       sectors_seen    = atomic64_read(&ctxt->stats->sectors_seen) - sectors_seen;
+       sectors_moved   = atomic64_read(&ctxt->stats->sectors_moved) - sectors_moved;
+       trace_and_count(c, copygc, c, buckets.nr, sectors_seen, sectors_moved);
+
+       darray_exit(&buckets);
        return ret;
 }
 
index 9d40b7d4ea29690dffd4933deaab32324bf0fa3d..56a5a7fbc0fd1497cbe6178e532108da60fe3337 100644 (file)
@@ -902,32 +902,30 @@ TRACE_EVENT(evacuate_bucket,
 
 TRACE_EVENT(copygc,
        TP_PROTO(struct bch_fs *c,
-                u64 sectors_moved, u64 sectors_not_moved,
-                u64 buckets_moved, u64 buckets_not_moved),
-       TP_ARGS(c,
-               sectors_moved, sectors_not_moved,
-               buckets_moved, buckets_not_moved),
+                u64 buckets,
+                u64 sectors_seen,
+                u64 sectors_moved),
+       TP_ARGS(c, buckets, sectors_seen, sectors_moved),
 
        TP_STRUCT__entry(
                __field(dev_t,          dev                     )
+               __field(u64,            buckets                 )
+               __field(u64,            sectors_seen            )
                __field(u64,            sectors_moved           )
-               __field(u64,            sectors_not_moved       )
-               __field(u64,            buckets_moved           )
-               __field(u64,            buckets_not_moved       )
        ),
 
        TP_fast_assign(
                __entry->dev                    = c->dev;
+               __entry->buckets                = buckets;
+               __entry->sectors_seen           = sectors_seen;
                __entry->sectors_moved          = sectors_moved;
-               __entry->sectors_not_moved      = sectors_not_moved;
-               __entry->buckets_moved          = buckets_moved;
-               __entry->buckets_not_moved = buckets_moved;
        ),
 
-       TP_printk("%d,%d sectors moved %llu remain %llu buckets moved %llu remain %llu",
+       TP_printk("%d,%d buckets %llu sectors seen %llu moved %llu",
                  MAJOR(__entry->dev), MINOR(__entry->dev),
-                 __entry->sectors_moved, __entry->sectors_not_moved,
-                 __entry->buckets_moved, __entry->buckets_not_moved)
+                 __entry->buckets,
+                 __entry->sectors_seen,
+                 __entry->sectors_moved)
 );
 
 TRACE_EVENT(copygc_wait,