bcachefs: Don't use BTREE_ITER_INTENT in make_extent_indirect()
authorKent Overstreet <kent.overstreet@linux.dev>
Tue, 14 Mar 2023 01:58:14 +0000 (21:58 -0400)
committerKent Overstreet <kent.overstreet@linux.dev>
Sun, 22 Oct 2023 21:09:57 +0000 (17:09 -0400)
This is a workaround for a btree path overflow - searching with
BTREE_ITER_INTENT periodically saves the iterator position for updates,
which eventually overflows.

Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
fs/bcachefs/reflink.c

index d2e6adc13fb17c519162cd55ddcd3e7c64e046c8..d8426e754cdf0cd9cef8ed9c71a26c367294987b 100644 (file)
@@ -189,7 +189,7 @@ static int bch2_make_extent_indirect(struct btree_trans *trans,
 
        for_each_btree_key_norestart(trans, reflink_iter, BTREE_ID_reflink,
                           POS(0, c->reflink_hint),
-                          BTREE_ITER_INTENT|BTREE_ITER_SLOTS, k, ret) {
+                          BTREE_ITER_SLOTS, k, ret) {
                if (reflink_iter.pos.inode) {
                        bch2_btree_iter_set_pos(&reflink_iter, POS_MIN);
                        continue;