@@ -1268,22 +1268,22 @@ static int bch2_fiemap(struct inode *vinode, struct fiemap_extent_info *info,
12681268 bch2_trans_iter_init (trans , & iter , BTREE_ID_extents ,
12691269 POS (ei -> v .i_ino , start ), 0 );
12701270
1271- while (true ) {
1271+ while (! ret || bch2_err_matches ( ret , BCH_ERR_transaction_restart ) ) {
12721272 enum btree_id data_btree = BTREE_ID_extents ;
12731273
12741274 bch2_trans_begin (trans );
12751275
12761276 u32 snapshot ;
12771277 ret = bch2_subvolume_get_snapshot (trans , ei -> ei_inum .subvol , & snapshot );
12781278 if (ret )
1279- goto err ;
1279+ continue ;
12801280
12811281 bch2_btree_iter_set_snapshot (& iter , snapshot );
12821282
12831283 k = bch2_btree_iter_peek_upto (& iter , end );
12841284 ret = bkey_err (k );
12851285 if (ret )
1286- goto err ;
1286+ continue ;
12871287
12881288 if (!k .k )
12891289 break ;
@@ -1303,7 +1303,7 @@ static int bch2_fiemap(struct inode *vinode, struct fiemap_extent_info *info,
13031303 ret = bch2_read_indirect_extent (trans , & data_btree ,
13041304 & offset_into_extent , & cur );
13051305 if (ret )
1306- break ;
1306+ continue ;
13071307
13081308 k = bkey_i_to_s_c (cur .k );
13091309 bch2_bkey_buf_realloc (& prev , c , k .k -> u64s );
@@ -1331,10 +1331,6 @@ static int bch2_fiemap(struct inode *vinode, struct fiemap_extent_info *info,
13311331
13321332 bch2_btree_iter_set_pos (& iter ,
13331333 POS (iter .pos .inode , iter .pos .offset + sectors ));
1334- err :
1335- if (ret &&
1336- !bch2_err_matches (ret , BCH_ERR_transaction_restart ))
1337- break ;
13381334 }
13391335 bch2_trans_iter_exit (trans , & iter );
13401336
0 commit comments