Commit 189c176c authored by Kent Overstreet's avatar Kent Overstreet

bcachefs: Improve move_extent tracepoint

Also print out the data_opts, so that we can see what specifically is
being done to an extent.
Signed-off-by: default avatarKent Overstreet <kent.overstreet@linux.dev>
parent ef740a1e
...@@ -33,7 +33,7 @@ void bch2_bkey_packed_to_binary_text(struct printbuf *out, ...@@ -33,7 +33,7 @@ void bch2_bkey_packed_to_binary_text(struct printbuf *out,
next_key_bits -= 64; next_key_bits -= 64;
} }
bch2_prt_u64_binary(out, v, min(word_bits, nr_key_bits)); bch2_prt_u64_base2_nbits(out, v, min(word_bits, nr_key_bits));
if (!next_key_bits) if (!next_key_bits)
break; break;
......
...@@ -9,6 +9,7 @@ ...@@ -9,6 +9,7 @@
#include "btree_update.h" #include "btree_update.h"
#include "btree_update_interior.h" #include "btree_update_interior.h"
#include "btree_write_buffer.h" #include "btree_write_buffer.h"
#include "compress.h"
#include "disk_groups.h" #include "disk_groups.h"
#include "ec.h" #include "ec.h"
#include "errcode.h" #include "errcode.h"
...@@ -34,12 +35,46 @@ const char * const bch2_data_ops_strs[] = { ...@@ -34,12 +35,46 @@ const char * const bch2_data_ops_strs[] = {
NULL NULL
}; };
static void trace_move_extent2(struct bch_fs *c, struct bkey_s_c k) static void bch2_data_update_opts_to_text(struct printbuf *out, struct bch_fs *c,
struct bch_io_opts *io_opts,
struct data_update_opts *data_opts)
{
printbuf_tabstop_push(out, 20);
prt_str(out, "rewrite ptrs:");
prt_tab(out);
bch2_prt_u64_base2(out, data_opts->rewrite_ptrs);
prt_newline(out);
prt_str(out, "kill ptrs: ");
prt_tab(out);
bch2_prt_u64_base2(out, data_opts->kill_ptrs);
prt_newline(out);
prt_str(out, "target: ");
prt_tab(out);
bch2_target_to_text(out, c, data_opts->target);
prt_newline(out);
prt_str(out, "compression: ");
prt_tab(out);
bch2_compression_opt_to_text(out, io_opts->background_compression ?: io_opts->compression);
prt_newline(out);
prt_str(out, "extra replicas: ");
prt_tab(out);
prt_u64(out, data_opts->extra_replicas);
}
static void trace_move_extent2(struct bch_fs *c, struct bkey_s_c k,
struct bch_io_opts *io_opts,
struct data_update_opts *data_opts)
{ {
if (trace_move_extent_enabled()) { if (trace_move_extent_enabled()) {
struct printbuf buf = PRINTBUF; struct printbuf buf = PRINTBUF;
bch2_bkey_val_to_text(&buf, c, k); bch2_bkey_val_to_text(&buf, c, k);
prt_newline(&buf);
bch2_data_update_opts_to_text(&buf, c, io_opts, data_opts);
trace_move_extent(c, buf.buf); trace_move_extent(c, buf.buf);
printbuf_exit(&buf); printbuf_exit(&buf);
} }
...@@ -250,9 +285,10 @@ int bch2_move_extent(struct moving_context *ctxt, ...@@ -250,9 +285,10 @@ int bch2_move_extent(struct moving_context *ctxt,
unsigned sectors = k.k->size, pages; unsigned sectors = k.k->size, pages;
int ret = -ENOMEM; int ret = -ENOMEM;
trace_move_extent2(c, k, &io_opts, &data_opts);
if (ctxt->stats) if (ctxt->stats)
ctxt->stats->pos = BBPOS(iter->btree_id, iter->pos); ctxt->stats->pos = BBPOS(iter->btree_id, iter->pos);
trace_move_extent2(c, k);
bch2_data_update_opts_normalize(k, &data_opts); bch2_data_update_opts_normalize(k, &data_opts);
......
...@@ -177,8 +177,7 @@ static struct bkey_s_c next_rebalance_extent(struct btree_trans *trans, ...@@ -177,8 +177,7 @@ static struct bkey_s_c next_rebalance_extent(struct btree_trans *trans,
prt_str(&buf, "target="); prt_str(&buf, "target=");
bch2_target_to_text(&buf, c, r->target); bch2_target_to_text(&buf, c, r->target);
prt_str(&buf, " compression="); prt_str(&buf, " compression=");
struct bch_compression_opt opt = __bch2_compression_decode(r->compression); bch2_compression_opt_to_text(&buf, r->compression);
prt_str(&buf, bch2_compression_opts[opt.type]);
prt_str(&buf, " "); prt_str(&buf, " ");
bch2_bkey_val_to_text(&buf, c, k); bch2_bkey_val_to_text(&buf, c, k);
......
...@@ -241,12 +241,17 @@ bool bch2_is_zero(const void *_p, size_t n) ...@@ -241,12 +241,17 @@ bool bch2_is_zero(const void *_p, size_t n)
return true; return true;
} }
void bch2_prt_u64_binary(struct printbuf *out, u64 v, unsigned nr_bits) void bch2_prt_u64_base2_nbits(struct printbuf *out, u64 v, unsigned nr_bits)
{ {
while (nr_bits) while (nr_bits)
prt_char(out, '0' + ((v >> --nr_bits) & 1)); prt_char(out, '0' + ((v >> --nr_bits) & 1));
} }
void bch2_prt_u64_base2(struct printbuf *out, u64 v)
{
bch2_prt_u64_base2_nbits(out, v, fls64(v) ?: 1);
}
void bch2_print_string_as_lines(const char *prefix, const char *lines) void bch2_print_string_as_lines(const char *prefix, const char *lines)
{ {
const char *p; const char *p;
......
...@@ -342,7 +342,8 @@ bool bch2_is_zero(const void *, size_t); ...@@ -342,7 +342,8 @@ bool bch2_is_zero(const void *, size_t);
u64 bch2_read_flag_list(char *, const char * const[]); u64 bch2_read_flag_list(char *, const char * const[]);
void bch2_prt_u64_binary(struct printbuf *, u64, unsigned); void bch2_prt_u64_base2_nbits(struct printbuf *, u64, unsigned);
void bch2_prt_u64_base2(struct printbuf *, u64);
void bch2_print_string_as_lines(const char *prefix, const char *lines); void bch2_print_string_as_lines(const char *prefix, const char *lines);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment