View | Details | Raw Unified | Return to bug 950178
Collapse All | Expand All

(-)a/fs/btrfs/extent-tree.c (-2 / +20 lines)
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
- 

Return to bug 950178