bcachefs: Fix bch2_move_btree()
authorKent Overstreet <kent.overstreet@gmail.com>
Thu, 7 Oct 2021 22:08:01 +0000 (18:08 -0400)
committerKent Overstreet <kent.overstreet@linux.dev>
Sun, 22 Oct 2023 21:09:13 +0000 (17:09 -0400)
bch2_trans_begin() is now required for transaction restarts.

Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com>
fs/bcachefs/move.c

index 2e7d8e2fe331d364f4d078d6611ca596fe14b04a..5e61cd431ef9138cea4372dbeca868a2cfe3cf95 100644 (file)
@@ -883,9 +883,11 @@ static int bch2_move_btree(struct bch_fs *c,
             id++) {
                stats->btree_id = id;
 
-               for_each_btree_node(&trans, iter, id,
-                                   id == start_btree_id ? start_pos : POS_MIN,
-                                   BTREE_ITER_PREFETCH, b) {
+               bch2_trans_node_iter_init(&trans, &iter, id, POS_MIN, 0, 0,
+                                         BTREE_ITER_PREFETCH);
+
+               while (bch2_trans_begin(&trans),
+                      (b = bch2_btree_iter_peek_node(&iter))) {
                        if (kthread && kthread_should_stop())
                                break;
 
@@ -911,6 +913,7 @@ static int bch2_move_btree(struct bch_fs *c,
                                        b->data->keys.seq, 0) ?: ret;
 next:
                        bch2_trans_cond_resched(&trans);
+                       bch2_btree_iter_next_node(&iter);
                }
                bch2_trans_iter_exit(&trans, &iter);