]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
bcachefs: Ignore backpointers to stripes in ec_stripe_update_extents()
authorKent Overstreet <kent.overstreet@linux.dev>
Sat, 8 Feb 2025 02:26:27 +0000 (21:26 -0500)
committerKent Overstreet <kent.overstreet@linux.dev>
Sat, 15 Mar 2025 01:02:13 +0000 (21:02 -0400)
Prep work for stripe backpointers: this path previously would get very
confused at being asked to process (remove redundant replicas) stripes.

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

index d2a5e76e64791ed9ca3114382cb8856661f5a4a1..1aa56d28de335b76d717392eab34c99c7a1ed281 100644 (file)
@@ -1380,8 +1380,12 @@ static int ec_stripe_update_bucket(struct btree_trans *trans, struct ec_stripe_b
                if (bp_k.k->type != KEY_TYPE_backpointer)
                        continue;
 
+               struct bkey_s_c_backpointer bp = bkey_s_c_to_backpointer(bp_k);
+               if (bp.v->btree_id == BTREE_ID_stripes)
+                       continue;
+
                ec_stripe_update_extent(trans, ca, bucket_pos, ptr.gen, s,
-                                       bkey_s_c_to_backpointer(bp_k), &last_flushed);
+                                       bp, &last_flushed);
        }));
 
        bch2_bkey_buf_exit(&last_flushed, c);