bcachefs: Make sure bch2_trans_mark_update uses correct iter flags
authorKent Overstreet <kent.overstreet@gmail.com>
Mon, 14 Jun 2021 20:32:44 +0000 (16:32 -0400)
committerKent Overstreet <kent.overstreet@linux.dev>
Sun, 22 Oct 2023 21:09:06 +0000 (17:09 -0400)
Now that bch2_btree_iter_peek_with_updates() has been removed in favor
of BTREE_ITER_WITH_UPDATES, we need to make sure it's not used where we
don't want it.

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

index da24c4038fc9841ec6543148ea580edc12c9ee4f..c427744a665f2aa76c48c18c2e9194daf6be05f8 100644 (file)
@@ -1916,7 +1916,7 @@ int bch2_trans_mark_update(struct btree_trans *trans,
                           unsigned flags)
 {
        struct bkey_s_c old;
-       int ret;
+       int iter_flags, ret;
 
        if (unlikely(flags & BTREE_TRIGGER_NORUN))
                return 0;
@@ -1924,7 +1924,13 @@ int bch2_trans_mark_update(struct btree_trans *trans,
        if (!btree_node_type_needs_gc(iter->btree_id))
                return 0;
 
+       iter_flags = iter->flags & BTREE_ITER_WITH_UPDATES;
+       iter->flags &= ~BTREE_ITER_WITH_UPDATES;
+
        old = bch2_btree_iter_peek_slot(iter);
+
+       iter->flags |= iter_flags;
+
        ret = bkey_err(old);
        if (ret)
                return ret;