mirror of
https://github.com/torvalds/linux
synced 2024-10-17 08:46:50 +00:00
bcachefs: Improved copygc wait debugging
This just adds a line for how long copygc has been waiting to sysfs copygc_wait, helpful for debugging why copygc isn't running. Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
This commit is contained in:
parent
11f117374a
commit
0fb11e0801
|
@ -943,6 +943,7 @@ struct bch_fs {
|
|||
/* COPYGC */
|
||||
struct task_struct *copygc_thread;
|
||||
struct write_point copygc_write_point;
|
||||
s64 copygc_wait_at;
|
||||
s64 copygc_wait;
|
||||
bool copygc_running;
|
||||
wait_queue_head_t copygc_running_wq;
|
||||
|
|
|
@ -269,6 +269,12 @@ void bch2_copygc_wait_to_text(struct printbuf *out, struct bch_fs *c)
|
|||
atomic64_read(&c->io_clock[WRITE].now)) << 9);
|
||||
prt_newline(out);
|
||||
|
||||
prt_printf(out, "Currently waiting since: ");
|
||||
prt_human_readable_u64(out, max(0LL,
|
||||
atomic64_read(&c->io_clock[WRITE].now) -
|
||||
c->copygc_wait_at) << 9);
|
||||
prt_newline(out);
|
||||
|
||||
prt_printf(out, "Currently calculated wait: ");
|
||||
prt_human_readable_u64(out, bch2_copygc_wait_amount(c));
|
||||
prt_newline(out);
|
||||
|
@ -317,9 +323,11 @@ static int bch2_copygc_thread(void *arg)
|
|||
wait = bch2_copygc_wait_amount(c);
|
||||
|
||||
if (wait > clock->max_slop) {
|
||||
c->copygc_wait_at = last;
|
||||
c->copygc_wait = last + wait;
|
||||
|
||||
move_buckets_wait(&trans, &ctxt, &move_buckets, 0, true);
|
||||
trace_and_count(c, copygc_wait, c, wait, last + wait);
|
||||
c->copygc_wait = last + wait;
|
||||
bch2_kthread_io_clock_wait(clock, last + wait,
|
||||
MAX_SCHEDULE_TIMEOUT);
|
||||
continue;
|
||||
|
|
Loading…
Reference in a new issue