|
Lines 10324-10330
void btrfs_delete_unused_bgs(struct btrfs_fs_info *fs_info)
Link Here
|
| 10324 |
*/ |
10324 |
*/ |
| 10325 |
/* 1 for btrfs_orphan_reserve_metadata() */ |
10325 |
/* 1 for btrfs_orphan_reserve_metadata() */ |
| 10326 |
trans = btrfs_start_transaction(root, 1); |
10326 |
trans = btrfs_start_transaction(root, 1); |
| 10327 |
if (IS_ERR(trans)) { |
10327 |
if (IS_ERR(trans) && PTR_ERR(trans) == -ENOSPC) { |
|
|
10328 |
u64 num_bytes = btrfs_calc_trans_metadata_size(root, 1); |
| 10329 |
|
| 10330 |
trans = btrfs_start_transaction(root, 0); |
| 10331 |
if (IS_ERR(trans)) { |
| 10332 |
btrfs_dec_block_group_ro(root, block_group); |
| 10333 |
ret = PTR_ERR(trans); |
| 10334 |
goto next; |
| 10335 |
} |
| 10336 |
ret = btrfs_cond_migrate_bytes(fs_info, |
| 10337 |
&fs_info->trans_block_rsv, |
| 10338 |
num_bytes, 1); |
| 10339 |
if (ret) { |
| 10340 |
btrfs_dec_block_group_ro(root, block_group); |
| 10341 |
ret = PTR_ERR(trans); |
| 10342 |
goto end_trans; |
| 10343 |
} |
| 10344 |
trans->block_rsv = &root->fs_info->trans_block_rsv; |
| 10345 |
trans->bytes_reserved = num_bytes; |
| 10346 |
} else if (IS_ERR(trans)) { |
| 10328 |
btrfs_dec_block_group_ro(root, block_group); |
10347 |
btrfs_dec_block_group_ro(root, block_group); |
| 10329 |
ret = PTR_ERR(trans); |
10348 |
ret = PTR_ERR(trans); |
| 10330 |
goto next; |
10349 |
goto next; |
| 10331 |
- |
|
|