bcachefs: Don't run triggers in fix_reflink_p_key()
authorKent Overstreet <kent.overstreet@gmail.com>
Mon, 25 Oct 2021 23:30:24 +0000 (19:30 -0400)
committerKent Overstreet <kent.overstreet@linux.dev>
Sun, 22 Oct 2023 21:09:15 +0000 (17:09 -0400)
It seems some users have reflink pointers which span many indirect
extents, from a short window in time when merging of reflink pointers
was allowed.

Now, we're seeing transaction path overflows in fix_reflink_p(), the
code path to clear out the reflink_p fields now used for front/back pad
- but, we don't actually need to be running triggers in that path, which
is an easy partial fix.

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

index 197b9079e2b8c90913462055a9cc40f41998a211..a61d380a47b6b0dac9c44b2068957dc4f69e1d53 100644 (file)
@@ -2258,7 +2258,7 @@ static int fix_reflink_p_key(struct btree_trans *trans, struct btree_iter *iter)
        u->v.front_pad  = 0;
        u->v.back_pad   = 0;
 
-       return bch2_trans_update(trans, iter, &u->k_i, 0);
+       return bch2_trans_update(trans, iter, &u->k_i, BTREE_TRIGGER_NORUN);
 }
 
 static int fix_reflink_p(struct bch_fs *c)