diff options
author | Kent Overstreet <kent.overstreet@linux.dev> | 2023-03-27 16:25:15 -0400 |
---|---|---|
committer | Kent Overstreet <kent.overstreet@linux.dev> | 2023-10-22 17:09:58 -0400 |
commit | ffc76edbbea3a55876fcd91d10db4ce38b27cac6 (patch) | |
tree | 3e26ef986f2553cec6af290acd9c39dead6d78c1 | |
parent | d59ca7e8c072b4587113ced8e00358368f315626 (diff) | |
download | lwn-ffc76edbbea3a55876fcd91d10db4ce38b27cac6.tar.gz lwn-ffc76edbbea3a55876fcd91d10db4ce38b27cac6.zip |
bcachefs: Fix bch2_verify_bucket_evacuated()
We were going into an infinite loop when printing out backpointers, due
to never incrementing bp_offset - whoops.
Also limit the number of backpointers we print to 10; this is debug code
and we only need to print a sample, not all of them.
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
-rw-r--r-- | fs/bcachefs/move.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/fs/bcachefs/move.c b/fs/bcachefs/move.c index ff4a74de728d..9717fdce3ba5 100644 --- a/fs/bcachefs/move.c +++ b/fs/bcachefs/move.c @@ -627,6 +627,7 @@ void bch2_verify_bucket_evacuated(struct btree_trans *trans, struct bpos bucket, struct printbuf buf = PRINTBUF; struct bch_backpointer bp; u64 bp_offset = 0; + unsigned nr_bps = 0; int ret; bch2_trans_begin(trans); @@ -688,6 +689,10 @@ failed_to_evacuate: prt_newline(&buf); bch2_bkey_val_to_text(&buf, c, k); bch2_trans_iter_exit(trans, &iter); + + if (++nr_bps > 10) + break; + bp_offset++; } bch2_print_string_as_lines(KERN_ERR, buf.buf); |