@@ -2341,7 +2341,7 @@ int btrfs_replace_file_extents(struct btrfs_inode *inode,
2341
2341
u64 min_size = btrfs_calc_insert_metadata_size (fs_info , 1 );
2342
2342
u64 ino_size = round_up (inode -> vfs_inode .i_size , fs_info -> sectorsize );
2343
2343
struct btrfs_trans_handle * trans = NULL ;
2344
- struct btrfs_block_rsv * rsv ;
2344
+ struct btrfs_block_rsv rsv ;
2345
2345
unsigned int rsv_count ;
2346
2346
u64 cur_offset ;
2347
2347
u64 len = end - start ;
@@ -2350,13 +2350,9 @@ int btrfs_replace_file_extents(struct btrfs_inode *inode,
2350
2350
if (end <= start )
2351
2351
return - EINVAL ;
2352
2352
2353
- rsv = btrfs_alloc_block_rsv (fs_info , BTRFS_BLOCK_RSV_TEMP );
2354
- if (!rsv ) {
2355
- ret = - ENOMEM ;
2356
- goto out ;
2357
- }
2358
- rsv -> size = btrfs_calc_insert_metadata_size (fs_info , 1 );
2359
- rsv -> failfast = true;
2353
+ btrfs_init_metadata_block_rsv (fs_info , & rsv , BTRFS_BLOCK_RSV_TEMP );
2354
+ rsv .size = btrfs_calc_insert_metadata_size (fs_info , 1 );
2355
+ rsv .failfast = true;
2360
2356
2361
2357
/*
2362
2358
* 1 - update the inode
@@ -2373,14 +2369,14 @@ int btrfs_replace_file_extents(struct btrfs_inode *inode,
2373
2369
if (IS_ERR (trans )) {
2374
2370
ret = PTR_ERR (trans );
2375
2371
trans = NULL ;
2376
- goto out_free ;
2372
+ goto out_release ;
2377
2373
}
2378
2374
2379
- ret = btrfs_block_rsv_migrate (& fs_info -> trans_block_rsv , rsv ,
2375
+ ret = btrfs_block_rsv_migrate (& fs_info -> trans_block_rsv , & rsv ,
2380
2376
min_size , false);
2381
2377
if (WARN_ON (ret ))
2382
2378
goto out_trans ;
2383
- trans -> block_rsv = rsv ;
2379
+ trans -> block_rsv = & rsv ;
2384
2380
2385
2381
cur_offset = start ;
2386
2382
drop_args .path = path ;
@@ -2496,10 +2492,10 @@ int btrfs_replace_file_extents(struct btrfs_inode *inode,
2496
2492
}
2497
2493
2498
2494
ret = btrfs_block_rsv_migrate (& fs_info -> trans_block_rsv ,
2499
- rsv , min_size , false);
2495
+ & rsv , min_size , false);
2500
2496
if (WARN_ON (ret ))
2501
2497
break ;
2502
- trans -> block_rsv = rsv ;
2498
+ trans -> block_rsv = & rsv ;
2503
2499
2504
2500
cur_offset = drop_args .drop_end ;
2505
2501
len = end - cur_offset ;
@@ -2576,16 +2572,15 @@ int btrfs_replace_file_extents(struct btrfs_inode *inode,
2576
2572
2577
2573
out_trans :
2578
2574
if (!trans )
2579
- goto out_free ;
2575
+ goto out_release ;
2580
2576
2581
2577
trans -> block_rsv = & fs_info -> trans_block_rsv ;
2582
2578
if (ret )
2583
2579
btrfs_end_transaction (trans );
2584
2580
else
2585
2581
* trans_out = trans ;
2586
- out_free :
2587
- btrfs_free_block_rsv (fs_info , rsv );
2588
- out :
2582
+ out_release :
2583
+ btrfs_block_rsv_release (fs_info , & rsv , (u64 )- 1 , NULL );
2589
2584
return ret ;
2590
2585
}
2591
2586
0 commit comments