@@ -3085,7 +3085,7 @@ static int __btrfs_free_extent(struct btrfs_trans_handle *trans,
30853085{
30863086 struct btrfs_fs_info * info = trans -> fs_info ;
30873087 struct btrfs_key key ;
3088- struct btrfs_path * path ;
3088+ BTRFS_PATH_AUTO_FREE ( path ) ;
30893089 struct btrfs_root * extent_root ;
30903090 struct extent_buffer * leaf ;
30913091 struct btrfs_extent_item * ei ;
@@ -3120,7 +3120,7 @@ static int __btrfs_free_extent(struct btrfs_trans_handle *trans,
31203120 node -> bytenr , refs_to_drop );
31213121 ret = - EINVAL ;
31223122 btrfs_abort_transaction (trans , ret );
3123- goto out ;
3123+ return ret ;
31243124 }
31253125
31263126 if (is_data )
@@ -3165,15 +3165,14 @@ static int __btrfs_free_extent(struct btrfs_trans_handle *trans,
31653165 abort_and_dump (trans , path ,
31663166"invalid iref slot %u, no EXTENT/METADATA_ITEM found but has inline extent ref" ,
31673167 path -> slots [0 ]);
3168- ret = - EUCLEAN ;
3169- goto out ;
3168+ return - EUCLEAN ;
31703169 }
31713170 /* Must be SHARED_* item, remove the backref first */
31723171 ret = remove_extent_backref (trans , extent_root , path ,
31733172 NULL , refs_to_drop , is_data );
31743173 if (unlikely (ret )) {
31753174 btrfs_abort_transaction (trans , ret );
3176- goto out ;
3175+ return ret ;
31773176 }
31783177 btrfs_release_path (path );
31793178
@@ -3222,7 +3221,7 @@ static int __btrfs_free_extent(struct btrfs_trans_handle *trans,
32223221 }
32233222 if (unlikely (ret < 0 )) {
32243223 btrfs_abort_transaction (trans , ret );
3225- goto out ;
3224+ return ret ;
32263225 }
32273226 extent_slot = path -> slots [0 ];
32283227 }
@@ -3231,10 +3230,10 @@ static int __btrfs_free_extent(struct btrfs_trans_handle *trans,
32313230"unable to find ref byte nr %llu parent %llu root %llu owner %llu offset %llu slot %d" ,
32323231 bytenr , node -> parent , node -> ref_root , owner_objectid ,
32333232 owner_offset , path -> slots [0 ]);
3234- goto out ;
3233+ return ret ;
32353234 } else {
32363235 btrfs_abort_transaction (trans , ret );
3237- goto out ;
3236+ return ret ;
32383237 }
32393238
32403239 leaf = path -> nodes [0 ];
@@ -3245,7 +3244,7 @@ static int __btrfs_free_extent(struct btrfs_trans_handle *trans,
32453244 "unexpected extent item size, has %u expect >= %zu" ,
32463245 item_size , sizeof (* ei ));
32473246 btrfs_abort_transaction (trans , ret );
3248- goto out ;
3247+ return ret ;
32493248 }
32503249 ei = btrfs_item_ptr (leaf , extent_slot ,
32513250 struct btrfs_extent_item );
@@ -3259,8 +3258,7 @@ static int __btrfs_free_extent(struct btrfs_trans_handle *trans,
32593258 key .objectid , key .type , key .offset ,
32603259 path -> slots [0 ], owner_objectid , item_size ,
32613260 sizeof (* ei ) + sizeof (* bi ));
3262- ret = - EUCLEAN ;
3263- goto out ;
3261+ return - EUCLEAN ;
32643262 }
32653263 bi = (struct btrfs_tree_block_info * )(ei + 1 );
32663264 WARN_ON (owner_objectid != btrfs_tree_block_level (leaf , bi ));
@@ -3271,8 +3269,7 @@ static int __btrfs_free_extent(struct btrfs_trans_handle *trans,
32713269 abort_and_dump (trans , path ,
32723270 "trying to drop %d refs but we only have %llu for bytenr %llu slot %u" ,
32733271 refs_to_drop , refs , bytenr , path -> slots [0 ]);
3274- ret = - EUCLEAN ;
3275- goto out ;
3272+ return - EUCLEAN ;
32763273 }
32773274 refs -= refs_to_drop ;
32783275
@@ -3288,8 +3285,7 @@ static int __btrfs_free_extent(struct btrfs_trans_handle *trans,
32883285 abort_and_dump (trans , path ,
32893286"invalid iref, got inlined extent ref but no EXTENT/METADATA_ITEM found, slot %u" ,
32903287 path -> slots [0 ]);
3291- ret = - EUCLEAN ;
3292- goto out ;
3288+ return - EUCLEAN ;
32933289 }
32943290 } else {
32953291 btrfs_set_extent_refs (leaf , ei , refs );
@@ -3299,7 +3295,7 @@ static int __btrfs_free_extent(struct btrfs_trans_handle *trans,
32993295 iref , refs_to_drop , is_data );
33003296 if (unlikely (ret )) {
33013297 btrfs_abort_transaction (trans , ret );
3302- goto out ;
3298+ return ret ;
33033299 }
33043300 }
33053301 } else {
@@ -3319,17 +3315,15 @@ static int __btrfs_free_extent(struct btrfs_trans_handle *trans,
33193315 "invalid refs_to_drop, current refs %u refs_to_drop %u slot %u" ,
33203316 extent_data_ref_count (path , iref ),
33213317 refs_to_drop , path -> slots [0 ]);
3322- ret = - EUCLEAN ;
3323- goto out ;
3318+ return - EUCLEAN ;
33243319 }
33253320 if (iref ) {
33263321 if (unlikely (path -> slots [0 ] != extent_slot )) {
33273322 abort_and_dump (trans , path ,
33283323"invalid iref, extent item key " BTRFS_KEY_FMT " slot %u doesn't have wanted iref" ,
33293324 BTRFS_KEY_FMT_VALUE (& key ),
33303325 path -> slots [0 ]);
3331- ret = - EUCLEAN ;
3332- goto out ;
3326+ return - EUCLEAN ;
33333327 }
33343328 } else {
33353329 /*
@@ -3342,8 +3336,7 @@ static int __btrfs_free_extent(struct btrfs_trans_handle *trans,
33423336 abort_and_dump (trans , path ,
33433337 "invalid SHARED_* item slot %u, previous item is not EXTENT/METADATA_ITEM" ,
33443338 path -> slots [0 ]);
3345- ret = - EUCLEAN ;
3346- goto out ;
3339+ return - EUCLEAN ;
33473340 }
33483341 path -> slots [0 ] = extent_slot ;
33493342 num_to_del = 2 ;
@@ -3364,16 +3357,14 @@ static int __btrfs_free_extent(struct btrfs_trans_handle *trans,
33643357 num_to_del );
33653358 if (unlikely (ret )) {
33663359 btrfs_abort_transaction (trans , ret );
3367- goto out ;
3360+ return ret ;
33683361 }
33693362 btrfs_release_path (path );
33703363
33713364 ret = do_free_extent_accounting (trans , bytenr , & delta );
33723365 }
33733366 btrfs_release_path (path );
33743367
3375- out :
3376- btrfs_free_path (path );
33773368 return ret ;
33783369}
33793370
0 commit comments