diff --git a/fs/bcachefs/buckets.c b/fs/bcachefs/buckets.c index 743d57eba760..c0797d4290bd 100644 --- a/fs/bcachefs/buckets.c +++ b/fs/bcachefs/buckets.c @@ -1033,8 +1033,15 @@ static int bch2_trigger_pointer(struct btree_trans *trans, if (flags & BTREE_TRIGGER_transactional) { struct bkey_i_alloc_v4 *a = bch2_trans_start_alloc_update(trans, bucket); - ret = PTR_ERR_OR_ZERO(a) ?: - __mark_pointer(trans, ca, k, &p.ptr, *sectors, bp.data_type, &a->v); + ret = PTR_ERR_OR_ZERO(a); + + if (!ret) { + percpu_down_read(&c->mark_lock); + ret = __mark_pointer(trans, ca, k, &p, *sectors, + bp.data_type, &a->v); + percpu_up_read(&c->mark_lock); + } + if (ret) goto err;