Skip to content

Commit 5d9ccda

Browse files
author
Kent Overstreet
committed
bcachefs: Improve trace_move_extent_finish
We're currently debugging issues with rebalance, where it's not making progress as quickly as it should be (or sometimes not at all). Add the full data_update to the move_extent_finish tracepoint, so we can check that the replicas we wrote match what we were supposed to do. Signed-off-by: Kent Overstreet <[email protected]>
1 parent 0e458a6 commit 5d9ccda

File tree

1 file changed

+34
-16
lines changed

1 file changed

+34
-16
lines changed

fs/bcachefs/data_update.c

Lines changed: 34 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -91,15 +91,28 @@ static bool bkey_nocow_lock(struct bch_fs *c, struct moving_context *ctxt, struc
9191
return true;
9292
}
9393

94-
static void trace_move_extent_finish2(struct bch_fs *c, struct bkey_s_c k)
94+
static noinline void trace_move_extent_finish2(struct data_update *u,
95+
struct bkey_i *new,
96+
struct bkey_i *insert)
9597
{
96-
if (trace_move_extent_finish_enabled()) {
97-
struct printbuf buf = PRINTBUF;
98+
struct bch_fs *c = u->op.c;
99+
struct printbuf buf = PRINTBUF;
98100

99-
bch2_bkey_val_to_text(&buf, c, k);
100-
trace_move_extent_finish(c, buf.buf);
101-
printbuf_exit(&buf);
102-
}
101+
prt_newline(&buf);
102+
103+
bch2_data_update_to_text(&buf, u);
104+
prt_newline(&buf);
105+
106+
prt_str_indented(&buf, "new replicas:\t");
107+
bch2_bkey_val_to_text(&buf, c, bkey_i_to_s_c(new));
108+
prt_newline(&buf);
109+
110+
prt_str_indented(&buf, "insert:\t");
111+
bch2_bkey_val_to_text(&buf, c, bkey_i_to_s_c(insert));
112+
prt_newline(&buf);
113+
114+
trace_move_extent_finish(c, buf.buf);
115+
printbuf_exit(&buf);
103116
}
104117

105118
static void trace_move_extent_fail2(struct data_update *m,
@@ -372,7 +385,8 @@ static int __bch2_data_update_index_update(struct btree_trans *trans,
372385
bch2_btree_iter_set_pos(&iter, next_pos);
373386

374387
this_cpu_add(c->counters[BCH_COUNTER_move_extent_finish], new->k.size);
375-
trace_move_extent_finish2(c, bkey_i_to_s_c(&new->k_i));
388+
if (trace_move_extent_finish_enabled())
389+
trace_move_extent_finish2(m, &new->k_i, insert);
376390
}
377391
err:
378392
if (bch2_err_matches(ret, BCH_ERR_transaction_restart))
@@ -525,34 +539,38 @@ void bch2_data_update_opts_to_text(struct printbuf *out, struct bch_fs *c,
525539
struct data_update_opts *data_opts)
526540
{
527541
printbuf_tabstop_push(out, 20);
528-
prt_str(out, "rewrite ptrs:\t");
542+
543+
prt_str_indented(out, "rewrite ptrs:\t");
529544
bch2_prt_u64_base2(out, data_opts->rewrite_ptrs);
530545
prt_newline(out);
531546

532-
prt_str(out, "kill ptrs:\t");
547+
prt_str_indented(out, "kill ptrs:\t");
533548
bch2_prt_u64_base2(out, data_opts->kill_ptrs);
534549
prt_newline(out);
535550

536-
prt_str(out, "target:\t");
551+
prt_str_indented(out, "target:\t");
537552
bch2_target_to_text(out, c, data_opts->target);
538553
prt_newline(out);
539554

540-
prt_str(out, "compression:\t");
555+
prt_str_indented(out, "compression:\t");
541556
bch2_compression_opt_to_text(out, io_opts->background_compression);
542557
prt_newline(out);
543558

544-
prt_str(out, "opts.replicas:\t");
559+
prt_str_indented(out, "opts.replicas:\t");
545560
prt_u64(out, io_opts->data_replicas);
561+
prt_newline(out);
546562

547-
prt_str(out, "extra replicas:\t");
563+
prt_str_indented(out, "extra replicas:\t");
548564
prt_u64(out, data_opts->extra_replicas);
549565
}
550566

551567
void bch2_data_update_to_text(struct printbuf *out, struct data_update *m)
552568
{
553-
bch2_bkey_val_to_text(out, m->op.c, bkey_i_to_s_c(m->k.k));
554-
prt_newline(out);
555569
bch2_data_update_opts_to_text(out, m->op.c, &m->op.opts, &m->data_opts);
570+
prt_newline(out);
571+
572+
prt_str_indented(out, "old key:\t");
573+
bch2_bkey_val_to_text(out, m->op.c, bkey_i_to_s_c(m->k.k));
556574
}
557575

558576
int bch2_extent_drop_ptrs(struct btree_trans *trans,

0 commit comments

Comments
 (0)