aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--fs/btrfs/ctree.h3
-rw-r--r--fs/btrfs/extent-tree.c23
-rw-r--r--fs/btrfs/relocation.c2
3 files changed, 6 insertions, 22 deletions
diff --git a/fs/btrfs/ctree.h b/fs/btrfs/ctree.h
index c5ceba4078cc..58a06dea4791 100644
--- a/fs/btrfs/ctree.h
+++ b/fs/btrfs/ctree.h
@@ -774,9 +774,6 @@ struct btrfs_block_rsv {
774 u64 reserved; 774 u64 reserved;
775 struct btrfs_space_info *space_info; 775 struct btrfs_space_info *space_info;
776 spinlock_t lock; 776 spinlock_t lock;
777 atomic_t usage;
778 unsigned int priority:8;
779 unsigned int refill_used:1;
780 unsigned int full:1; 777 unsigned int full:1;
781}; 778};
782 779
diff --git a/fs/btrfs/extent-tree.c b/fs/btrfs/extent-tree.c
index 30c0558eae84..5395cc639270 100644
--- a/fs/btrfs/extent-tree.c
+++ b/fs/btrfs/extent-tree.c
@@ -3659,8 +3659,6 @@ void btrfs_init_block_rsv(struct btrfs_block_rsv *rsv)
3659{ 3659{
3660 memset(rsv, 0, sizeof(*rsv)); 3660 memset(rsv, 0, sizeof(*rsv));
3661 spin_lock_init(&rsv->lock); 3661 spin_lock_init(&rsv->lock);
3662 atomic_set(&rsv->usage, 1);
3663 rsv->priority = 6;
3664} 3662}
3665 3663
3666struct btrfs_block_rsv *btrfs_alloc_block_rsv(struct btrfs_root *root) 3664struct btrfs_block_rsv *btrfs_alloc_block_rsv(struct btrfs_root *root)
@@ -3681,10 +3679,8 @@ struct btrfs_block_rsv *btrfs_alloc_block_rsv(struct btrfs_root *root)
3681void btrfs_free_block_rsv(struct btrfs_root *root, 3679void btrfs_free_block_rsv(struct btrfs_root *root,
3682 struct btrfs_block_rsv *rsv) 3680 struct btrfs_block_rsv *rsv)
3683{ 3681{
3684 if (rsv && atomic_dec_and_test(&rsv->usage)) { 3682 btrfs_block_rsv_release(root, rsv, (u64)-1);
3685 btrfs_block_rsv_release(root, rsv, (u64)-1); 3683 kfree(rsv);
3686 kfree(rsv);
3687 }
3688} 3684}
3689 3685
3690int btrfs_block_rsv_add(struct btrfs_trans_handle *trans, 3686int btrfs_block_rsv_add(struct btrfs_trans_handle *trans,
@@ -3734,13 +3730,10 @@ int btrfs_block_rsv_check(struct btrfs_trans_handle *trans,
3734 if (!ret) 3730 if (!ret)
3735 return 0; 3731 return 0;
3736 3732
3737 if (block_rsv->refill_used) { 3733 ret = reserve_metadata_bytes(trans, root, block_rsv, num_bytes, 0);
3738 ret = reserve_metadata_bytes(trans, root, block_rsv, 3734 if (!ret) {
3739 num_bytes, 0); 3735 block_rsv_add_bytes(block_rsv, num_bytes, 0);
3740 if (!ret) { 3736 return 0;
3741 block_rsv_add_bytes(block_rsv, num_bytes, 0);
3742 return 0;
3743 }
3744 } 3737 }
3745 3738
3746 if (commit_trans) { 3739 if (commit_trans) {
@@ -3859,16 +3852,12 @@ static void init_global_block_rsv(struct btrfs_fs_info *fs_info)
3859 3852
3860 space_info = __find_space_info(fs_info, BTRFS_BLOCK_GROUP_SYSTEM); 3853 space_info = __find_space_info(fs_info, BTRFS_BLOCK_GROUP_SYSTEM);
3861 fs_info->chunk_block_rsv.space_info = space_info; 3854 fs_info->chunk_block_rsv.space_info = space_info;
3862 fs_info->chunk_block_rsv.priority = 10;
3863 3855
3864 space_info = __find_space_info(fs_info, BTRFS_BLOCK_GROUP_METADATA); 3856 space_info = __find_space_info(fs_info, BTRFS_BLOCK_GROUP_METADATA);
3865 fs_info->global_block_rsv.space_info = space_info; 3857 fs_info->global_block_rsv.space_info = space_info;
3866 fs_info->global_block_rsv.priority = 10;
3867 fs_info->global_block_rsv.refill_used = 1;
3868 fs_info->delalloc_block_rsv.space_info = space_info; 3858 fs_info->delalloc_block_rsv.space_info = space_info;
3869 fs_info->trans_block_rsv.space_info = space_info; 3859 fs_info->trans_block_rsv.space_info = space_info;
3870 fs_info->empty_block_rsv.space_info = space_info; 3860 fs_info->empty_block_rsv.space_info = space_info;
3871 fs_info->empty_block_rsv.priority = 10;
3872 3861
3873 fs_info->extent_root->block_rsv = &fs_info->global_block_rsv; 3862 fs_info->extent_root->block_rsv = &fs_info->global_block_rsv;
3874 fs_info->csum_root->block_rsv = &fs_info->global_block_rsv; 3863 fs_info->csum_root->block_rsv = &fs_info->global_block_rsv;
diff --git a/fs/btrfs/relocation.c b/fs/btrfs/relocation.c
index 545b04358249..aeaed99e9cfe 100644
--- a/fs/btrfs/relocation.c
+++ b/fs/btrfs/relocation.c
@@ -3650,8 +3650,6 @@ int prepare_to_relocate(struct reloc_control *rc)
3650 if (ret) 3650 if (ret)
3651 return ret; 3651 return ret;
3652 3652
3653 rc->block_rsv->refill_used = 1;
3654
3655 memset(&rc->cluster, 0, sizeof(rc->cluster)); 3653 memset(&rc->cluster, 0, sizeof(rc->cluster));
3656 rc->search_start = rc->block_group->key.objectid; 3654 rc->search_start = rc->block_group->key.objectid;
3657 rc->extents_found = 0; 3655 rc->extents_found = 0;