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_
18851885 bitmap_and (devs .d , devs .d , c -> rw_devs [BCH_DATA_user ].d , BCH_SB_MEMBERS_MAX );
18861886
18871887 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+
18891897 if (i < h -> s -> nr_data )
18901898 nr_have_data ++ ;
18911899 else
You can’t perform that action at this time.
0 commit comments