summaryrefslogtreecommitdiff
path: root/fs/bcachefs/move.c
diff options
context:
space:
mode:
authorKent Overstreet <kent.overstreet@linux.dev>2023-03-27 23:25:15 +0300
committerKent Overstreet <kent.overstreet@linux.dev>2023-10-23 00:09:58 +0300
commitffc76edbbea3a55876fcd91d10db4ce38b27cac6 (patch)
tree3e26ef986f2553cec6af290acd9c39dead6d78c1 /fs/bcachefs/move.c
parentd59ca7e8c072b4587113ced8e00358368f315626 (diff)
downloadlinux-ffc76edbbea3a55876fcd91d10db4ce38b27cac6.tar.xz
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>
Diffstat (limited to 'fs/bcachefs/move.c')
-rw-r--r--fs/bcachefs/move.c5
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);