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;