@@ -193,7 +193,7 @@ static int __mark_stripe_bucket(struct btree_trans *trans,
193193 a -> dirty_sectors ,
194194 a -> stripe , s .k -> p .offset ,
195195 (bch2_bkey_val_to_text (& buf , c , s .s_c ), buf .buf ))) {
196- ret = - EIO ;
196+ ret = - BCH_ERR_mark_stripe ;
197197 goto err ;
198198 }
199199
@@ -204,7 +204,7 @@ static int __mark_stripe_bucket(struct btree_trans *trans,
204204 a -> dirty_sectors ,
205205 a -> cached_sectors ,
206206 (bch2_bkey_val_to_text (& buf , c , s .s_c ), buf .buf ))) {
207- ret = - EIO ;
207+ ret = - BCH_ERR_mark_stripe ;
208208 goto err ;
209209 }
210210 } else {
@@ -214,7 +214,7 @@ static int __mark_stripe_bucket(struct btree_trans *trans,
214214 bucket .inode , bucket .offset , a -> gen ,
215215 a -> stripe ,
216216 (bch2_bkey_val_to_text (& buf , c , s .s_c ), buf .buf ))) {
217- ret = - EIO ;
217+ ret = - BCH_ERR_mark_stripe ;
218218 goto err ;
219219 }
220220
@@ -224,7 +224,7 @@ static int __mark_stripe_bucket(struct btree_trans *trans,
224224 bch2_data_type_str (a -> data_type ),
225225 bch2_data_type_str (data_type ),
226226 (bch2_bkey_val_to_text (& buf , c , s .s_c ), buf .buf ))) {
227- ret = - EIO ;
227+ ret = - BCH_ERR_mark_stripe ;
228228 goto err ;
229229 }
230230
@@ -236,7 +236,7 @@ static int __mark_stripe_bucket(struct btree_trans *trans,
236236 a -> dirty_sectors ,
237237 a -> cached_sectors ,
238238 (bch2_bkey_val_to_text (& buf , c , s .s_c ), buf .buf ))) {
239- ret = - EIO ;
239+ ret = - BCH_ERR_mark_stripe ;
240240 goto err ;
241241 }
242242 }
@@ -274,8 +274,8 @@ static int mark_stripe_bucket(struct btree_trans *trans,
274274
275275 struct bch_dev * ca = bch2_dev_tryget (c , ptr -> dev );
276276 if (unlikely (!ca )) {
277- if (!(flags & BTREE_TRIGGER_overwrite ))
278- ret = - EIO ;
277+ if (ptr -> dev != BCH_SB_MEMBER_INVALID && !(flags & BTREE_TRIGGER_overwrite ))
278+ ret = - BCH_ERR_mark_stripe ;
279279 goto err ;
280280 }
281281
@@ -294,7 +294,7 @@ static int mark_stripe_bucket(struct btree_trans *trans,
294294 if (bch2_fs_inconsistent_on (!g , c , "reference to invalid bucket on device %u\n %s" ,
295295 ptr -> dev ,
296296 (bch2_bkey_val_to_text (& buf , c , s .s_c ), buf .buf ))) {
297- ret = - EIO ;
297+ ret = - BCH_ERR_mark_stripe ;
298298 goto err_unlock ;
299299 }
300300
@@ -839,23 +839,23 @@ int bch2_ec_read_extent(struct btree_trans *trans, struct bch_read_bio *rbio)
839839 bch_err_ratelimited (c ,
840840 "error doing reconstruct read: error %i looking up stripe" , ret );
841841 kfree (buf );
842- return - EIO ;
842+ return - BCH_ERR_stripe_reconstruct ;
843843 }
844844
845845 v = & bkey_i_to_stripe (& buf -> key )-> v ;
846846
847847 if (!bch2_ptr_matches_stripe (v , rbio -> pick )) {
848848 bch_err_ratelimited (c ,
849849 "error doing reconstruct read: pointer doesn't match stripe" );
850- ret = - EIO ;
850+ ret = - BCH_ERR_stripe_reconstruct ;
851851 goto err ;
852852 }
853853
854854 offset = rbio -> bio .bi_iter .bi_sector - v -> ptrs [rbio -> pick .ec .block ].offset ;
855855 if (offset + bio_sectors (& rbio -> bio ) > le16_to_cpu (v -> sectors )) {
856856 bch_err_ratelimited (c ,
857857 "error doing reconstruct read: read is bigger than stripe" );
858- ret = - EIO ;
858+ ret = - BCH_ERR_stripe_reconstruct ;
859859 goto err ;
860860 }
861861
@@ -871,7 +871,7 @@ int bch2_ec_read_extent(struct btree_trans *trans, struct bch_read_bio *rbio)
871871 if (ec_nr_failed (buf ) > v -> nr_redundant ) {
872872 bch_err_ratelimited (c ,
873873 "error doing reconstruct read: unable to read enough blocks" );
874- ret = - EIO ;
874+ ret = - BCH_ERR_stripe_reconstruct ;
875875 goto err ;
876876 }
877877
0 commit comments