File tree Expand file tree Collapse file tree 1 file changed +9
-1
lines changed Expand file tree Collapse file tree 1 file changed +9
-1
lines changed Original file line number Diff line number Diff line change @@ -1885,7 +1885,15 @@ static int new_stripe_alloc_buckets(struct btree_trans *trans, struct ec_stripe_
1885
1885
bitmap_and (devs .d , devs .d , c -> rw_devs [BCH_DATA_user ].d , BCH_SB_MEMBERS_MAX );
1886
1886
1887
1887
for_each_set_bit (i , h -> s -> blocks_gotten , v -> nr_blocks ) {
1888
- __clear_bit (v -> ptrs [i ].dev , devs .d );
1888
+ /*
1889
+ * Note: we don't yet repair invalid blocks (failed/removed
1890
+ * devices) when reusing stripes - we still need a codepath to
1891
+ * walk backpointers and update all extents that point to that
1892
+ * block when updating the stripe
1893
+ */
1894
+ if (v -> ptrs [i ].dev != BCH_SB_MEMBER_INVALID )
1895
+ __clear_bit (v -> ptrs [i ].dev , devs .d );
1896
+
1889
1897
if (i < h -> s -> nr_data )
1890
1898
nr_have_data ++ ;
1891
1899
else
You can’t perform that action at this time.
0 commit comments