diff options
author | Josef Bacik <josef@redhat.com> | 2011-08-05 10:25:38 -0400 |
---|---|---|
committer | Josef Bacik <josef@redhat.com> | 2011-10-19 15:12:32 -0400 |
commit | 37be25bcb6d731914e126f8de59c4367f0d66b80 (patch) | |
tree | d9e78eb4440f60a7697f8f7c56a37c163734cf66 | |
parent | dba68306f3fae681b1005137f130f5bcfdfed34a (diff) |
Btrfs: kill the durable block rsv stuff
This is confusing code and isn't used by anything anymore, so delete it.
Signed-off-by: Josef Bacik <josef@redhat.com>
-rw-r--r-- | fs/btrfs/ctree.h | 11 | ||||
-rw-r--r-- | fs/btrfs/disk-io.c | 2 | ||||
-rw-r--r-- | fs/btrfs/extent-tree.c | 100 | ||||
-rw-r--r-- | fs/btrfs/inode.c | 4 | ||||
-rw-r--r-- | fs/btrfs/relocation.c | 1 |
5 files changed, 17 insertions, 101 deletions
diff --git a/fs/btrfs/ctree.h b/fs/btrfs/ctree.h index 4ef777e85c8..c5ceba4078c 100644 --- a/fs/btrfs/ctree.h +++ b/fs/btrfs/ctree.h | |||
@@ -772,13 +772,10 @@ struct btrfs_space_info { | |||
772 | struct btrfs_block_rsv { | 772 | struct btrfs_block_rsv { |
773 | u64 size; | 773 | u64 size; |
774 | u64 reserved; | 774 | u64 reserved; |
775 | u64 freed[2]; | ||
776 | struct btrfs_space_info *space_info; | 775 | struct btrfs_space_info *space_info; |
777 | struct list_head list; | ||
778 | spinlock_t lock; | 776 | spinlock_t lock; |
779 | atomic_t usage; | 777 | atomic_t usage; |
780 | unsigned int priority:8; | 778 | unsigned int priority:8; |
781 | unsigned int durable:1; | ||
782 | unsigned int refill_used:1; | 779 | unsigned int refill_used:1; |
783 | unsigned int full:1; | 780 | unsigned int full:1; |
784 | }; | 781 | }; |
@@ -840,7 +837,6 @@ struct btrfs_block_group_cache { | |||
840 | spinlock_t lock; | 837 | spinlock_t lock; |
841 | u64 pinned; | 838 | u64 pinned; |
842 | u64 reserved; | 839 | u64 reserved; |
843 | u64 reserved_pinned; | ||
844 | u64 bytes_super; | 840 | u64 bytes_super; |
845 | u64 flags; | 841 | u64 flags; |
846 | u64 sectorsize; | 842 | u64 sectorsize; |
@@ -919,11 +915,6 @@ struct btrfs_fs_info { | |||
919 | 915 | ||
920 | struct btrfs_block_rsv empty_block_rsv; | 916 | struct btrfs_block_rsv empty_block_rsv; |
921 | 917 | ||
922 | /* list of block reservations that cross multiple transactions */ | ||
923 | struct list_head durable_block_rsv_list; | ||
924 | |||
925 | struct mutex durable_block_rsv_mutex; | ||
926 | |||
927 | u64 generation; | 918 | u64 generation; |
928 | u64 last_trans_committed; | 919 | u64 last_trans_committed; |
929 | 920 | ||
@@ -2238,8 +2229,6 @@ void btrfs_init_block_rsv(struct btrfs_block_rsv *rsv); | |||
2238 | struct btrfs_block_rsv *btrfs_alloc_block_rsv(struct btrfs_root *root); | 2229 | struct btrfs_block_rsv *btrfs_alloc_block_rsv(struct btrfs_root *root); |
2239 | void btrfs_free_block_rsv(struct btrfs_root *root, | 2230 | void btrfs_free_block_rsv(struct btrfs_root *root, |
2240 | struct btrfs_block_rsv *rsv); | 2231 | struct btrfs_block_rsv *rsv); |
2241 | void btrfs_add_durable_block_rsv(struct btrfs_fs_info *fs_info, | ||
2242 | struct btrfs_block_rsv *rsv); | ||
2243 | int btrfs_block_rsv_add(struct btrfs_trans_handle *trans, | 2232 | int btrfs_block_rsv_add(struct btrfs_trans_handle *trans, |
2244 | struct btrfs_root *root, | 2233 | struct btrfs_root *root, |
2245 | struct btrfs_block_rsv *block_rsv, | 2234 | struct btrfs_block_rsv *block_rsv, |
diff --git a/fs/btrfs/disk-io.c b/fs/btrfs/disk-io.c index 07b3ac662e1..0b5643a68d5 100644 --- a/fs/btrfs/disk-io.c +++ b/fs/btrfs/disk-io.c | |||
@@ -1665,8 +1665,6 @@ struct btrfs_root *open_ctree(struct super_block *sb, | |||
1665 | btrfs_init_block_rsv(&fs_info->trans_block_rsv); | 1665 | btrfs_init_block_rsv(&fs_info->trans_block_rsv); |
1666 | btrfs_init_block_rsv(&fs_info->chunk_block_rsv); | 1666 | btrfs_init_block_rsv(&fs_info->chunk_block_rsv); |
1667 | btrfs_init_block_rsv(&fs_info->empty_block_rsv); | 1667 | btrfs_init_block_rsv(&fs_info->empty_block_rsv); |
1668 | INIT_LIST_HEAD(&fs_info->durable_block_rsv_list); | ||
1669 | mutex_init(&fs_info->durable_block_rsv_mutex); | ||
1670 | atomic_set(&fs_info->nr_async_submits, 0); | 1668 | atomic_set(&fs_info->nr_async_submits, 0); |
1671 | atomic_set(&fs_info->async_delalloc_pages, 0); | 1669 | atomic_set(&fs_info->async_delalloc_pages, 0); |
1672 | atomic_set(&fs_info->async_submit_draining, 0); | 1670 | atomic_set(&fs_info->async_submit_draining, 0); |
diff --git a/fs/btrfs/extent-tree.c b/fs/btrfs/extent-tree.c index 4add1ac2dda..30c0558eae8 100644 --- a/fs/btrfs/extent-tree.c +++ b/fs/btrfs/extent-tree.c | |||
@@ -121,7 +121,6 @@ void btrfs_put_block_group(struct btrfs_block_group_cache *cache) | |||
121 | if (atomic_dec_and_test(&cache->count)) { | 121 | if (atomic_dec_and_test(&cache->count)) { |
122 | WARN_ON(cache->pinned > 0); | 122 | WARN_ON(cache->pinned > 0); |
123 | WARN_ON(cache->reserved > 0); | 123 | WARN_ON(cache->reserved > 0); |
124 | WARN_ON(cache->reserved_pinned > 0); | ||
125 | kfree(cache->free_space_ctl); | 124 | kfree(cache->free_space_ctl); |
126 | kfree(cache); | 125 | kfree(cache); |
127 | } | 126 | } |
@@ -3662,7 +3661,6 @@ void btrfs_init_block_rsv(struct btrfs_block_rsv *rsv) | |||
3662 | spin_lock_init(&rsv->lock); | 3661 | spin_lock_init(&rsv->lock); |
3663 | atomic_set(&rsv->usage, 1); | 3662 | atomic_set(&rsv->usage, 1); |
3664 | rsv->priority = 6; | 3663 | rsv->priority = 6; |
3665 | INIT_LIST_HEAD(&rsv->list); | ||
3666 | } | 3664 | } |
3667 | 3665 | ||
3668 | struct btrfs_block_rsv *btrfs_alloc_block_rsv(struct btrfs_root *root) | 3666 | struct btrfs_block_rsv *btrfs_alloc_block_rsv(struct btrfs_root *root) |
@@ -3685,25 +3683,10 @@ void btrfs_free_block_rsv(struct btrfs_root *root, | |||
3685 | { | 3683 | { |
3686 | if (rsv && atomic_dec_and_test(&rsv->usage)) { | 3684 | if (rsv && atomic_dec_and_test(&rsv->usage)) { |
3687 | btrfs_block_rsv_release(root, rsv, (u64)-1); | 3685 | btrfs_block_rsv_release(root, rsv, (u64)-1); |
3688 | if (!rsv->durable) | 3686 | kfree(rsv); |
3689 | kfree(rsv); | ||
3690 | } | 3687 | } |
3691 | } | 3688 | } |
3692 | 3689 | ||
3693 | /* | ||
3694 | * make the block_rsv struct be able to capture freed space. | ||
3695 | * the captured space will re-add to the the block_rsv struct | ||
3696 | * after transaction commit | ||
3697 | */ | ||
3698 | void btrfs_add_durable_block_rsv(struct btrfs_fs_info *fs_info, | ||
3699 | struct btrfs_block_rsv *block_rsv) | ||
3700 | { | ||
3701 | block_rsv->durable = 1; | ||
3702 | mutex_lock(&fs_info->durable_block_rsv_mutex); | ||
3703 | list_add_tail(&block_rsv->list, &fs_info->durable_block_rsv_list); | ||
3704 | mutex_unlock(&fs_info->durable_block_rsv_mutex); | ||
3705 | } | ||
3706 | |||
3707 | int btrfs_block_rsv_add(struct btrfs_trans_handle *trans, | 3690 | int btrfs_block_rsv_add(struct btrfs_trans_handle *trans, |
3708 | struct btrfs_root *root, | 3691 | struct btrfs_root *root, |
3709 | struct btrfs_block_rsv *block_rsv, | 3692 | struct btrfs_block_rsv *block_rsv, |
@@ -3745,9 +3728,7 @@ int btrfs_block_rsv_check(struct btrfs_trans_handle *trans, | |||
3745 | ret = 0; | 3728 | ret = 0; |
3746 | } else { | 3729 | } else { |
3747 | num_bytes -= block_rsv->reserved; | 3730 | num_bytes -= block_rsv->reserved; |
3748 | if (block_rsv->durable && | 3731 | commit_trans = 1; |
3749 | block_rsv->freed[0] + block_rsv->freed[1] >= num_bytes) | ||
3750 | commit_trans = 1; | ||
3751 | } | 3732 | } |
3752 | spin_unlock(&block_rsv->lock); | 3733 | spin_unlock(&block_rsv->lock); |
3753 | if (!ret) | 3734 | if (!ret) |
@@ -3763,8 +3744,18 @@ int btrfs_block_rsv_check(struct btrfs_trans_handle *trans, | |||
3763 | } | 3744 | } |
3764 | 3745 | ||
3765 | if (commit_trans) { | 3746 | if (commit_trans) { |
3747 | struct btrfs_space_info *sinfo = block_rsv->space_info; | ||
3748 | |||
3766 | if (trans) | 3749 | if (trans) |
3767 | return -EAGAIN; | 3750 | return -EAGAIN; |
3751 | |||
3752 | spin_lock(&sinfo->lock); | ||
3753 | if (sinfo->bytes_pinned < num_bytes) { | ||
3754 | spin_unlock(&sinfo->lock); | ||
3755 | return -ENOSPC; | ||
3756 | } | ||
3757 | spin_unlock(&sinfo->lock); | ||
3758 | |||
3768 | trans = btrfs_join_transaction(root); | 3759 | trans = btrfs_join_transaction(root); |
3769 | BUG_ON(IS_ERR(trans)); | 3760 | BUG_ON(IS_ERR(trans)); |
3770 | ret = btrfs_commit_transaction(trans, root); | 3761 | ret = btrfs_commit_transaction(trans, root); |
@@ -3885,10 +3876,6 @@ static void init_global_block_rsv(struct btrfs_fs_info *fs_info) | |||
3885 | fs_info->tree_root->block_rsv = &fs_info->global_block_rsv; | 3876 | fs_info->tree_root->block_rsv = &fs_info->global_block_rsv; |
3886 | fs_info->chunk_root->block_rsv = &fs_info->chunk_block_rsv; | 3877 | fs_info->chunk_root->block_rsv = &fs_info->chunk_block_rsv; |
3887 | 3878 | ||
3888 | btrfs_add_durable_block_rsv(fs_info, &fs_info->global_block_rsv); | ||
3889 | |||
3890 | btrfs_add_durable_block_rsv(fs_info, &fs_info->delalloc_block_rsv); | ||
3891 | |||
3892 | update_global_block_rsv(fs_info); | 3879 | update_global_block_rsv(fs_info); |
3893 | } | 3880 | } |
3894 | 3881 | ||
@@ -4447,13 +4434,8 @@ static int unpin_extent_range(struct btrfs_root *root, u64 start, u64 end) | |||
4447 | spin_lock(&cache->lock); | 4434 | spin_lock(&cache->lock); |
4448 | cache->pinned -= len; | 4435 | cache->pinned -= len; |
4449 | cache->space_info->bytes_pinned -= len; | 4436 | cache->space_info->bytes_pinned -= len; |
4450 | if (cache->ro) { | 4437 | if (cache->ro) |
4451 | cache->space_info->bytes_readonly += len; | 4438 | cache->space_info->bytes_readonly += len; |
4452 | } else if (cache->reserved_pinned > 0) { | ||
4453 | len = min(len, cache->reserved_pinned); | ||
4454 | cache->reserved_pinned -= len; | ||
4455 | cache->space_info->bytes_may_use += len; | ||
4456 | } | ||
4457 | spin_unlock(&cache->lock); | 4439 | spin_unlock(&cache->lock); |
4458 | spin_unlock(&cache->space_info->lock); | 4440 | spin_unlock(&cache->space_info->lock); |
4459 | } | 4441 | } |
@@ -4468,11 +4450,8 @@ int btrfs_finish_extent_commit(struct btrfs_trans_handle *trans, | |||
4468 | { | 4450 | { |
4469 | struct btrfs_fs_info *fs_info = root->fs_info; | 4451 | struct btrfs_fs_info *fs_info = root->fs_info; |
4470 | struct extent_io_tree *unpin; | 4452 | struct extent_io_tree *unpin; |
4471 | struct btrfs_block_rsv *block_rsv; | ||
4472 | struct btrfs_block_rsv *next_rsv; | ||
4473 | u64 start; | 4453 | u64 start; |
4474 | u64 end; | 4454 | u64 end; |
4475 | int idx; | ||
4476 | int ret; | 4455 | int ret; |
4477 | 4456 | ||
4478 | if (fs_info->pinned_extents == &fs_info->freed_extents[0]) | 4457 | if (fs_info->pinned_extents == &fs_info->freed_extents[0]) |
@@ -4495,30 +4474,6 @@ int btrfs_finish_extent_commit(struct btrfs_trans_handle *trans, | |||
4495 | cond_resched(); | 4474 | cond_resched(); |
4496 | } | 4475 | } |
4497 | 4476 | ||
4498 | mutex_lock(&fs_info->durable_block_rsv_mutex); | ||
4499 | list_for_each_entry_safe(block_rsv, next_rsv, | ||
4500 | &fs_info->durable_block_rsv_list, list) { | ||
4501 | |||
4502 | idx = trans->transid & 0x1; | ||
4503 | if (block_rsv->freed[idx] > 0) { | ||
4504 | block_rsv_add_bytes(block_rsv, | ||
4505 | block_rsv->freed[idx], 0); | ||
4506 | block_rsv->freed[idx] = 0; | ||
4507 | } | ||
4508 | if (atomic_read(&block_rsv->usage) == 0) { | ||
4509 | btrfs_block_rsv_release(root, block_rsv, (u64)-1); | ||
4510 | |||
4511 | if (block_rsv->freed[0] == 0 && | ||
4512 | block_rsv->freed[1] == 0) { | ||
4513 | list_del_init(&block_rsv->list); | ||
4514 | kfree(block_rsv); | ||
4515 | } | ||
4516 | } else { | ||
4517 | btrfs_block_rsv_release(root, block_rsv, 0); | ||
4518 | } | ||
4519 | } | ||
4520 | mutex_unlock(&fs_info->durable_block_rsv_mutex); | ||
4521 | |||
4522 | return 0; | 4477 | return 0; |
4523 | } | 4478 | } |
4524 | 4479 | ||
@@ -4820,36 +4775,18 @@ void btrfs_free_tree_block(struct btrfs_trans_handle *trans, | |||
4820 | if (root->root_key.objectid != BTRFS_TREE_LOG_OBJECTID) { | 4775 | if (root->root_key.objectid != BTRFS_TREE_LOG_OBJECTID) { |
4821 | ret = check_ref_cleanup(trans, root, buf->start); | 4776 | ret = check_ref_cleanup(trans, root, buf->start); |
4822 | if (!ret) | 4777 | if (!ret) |
4823 | goto pin; | 4778 | goto out; |
4824 | } | 4779 | } |
4825 | 4780 | ||
4826 | if (btrfs_header_flag(buf, BTRFS_HEADER_FLAG_WRITTEN)) { | 4781 | if (btrfs_header_flag(buf, BTRFS_HEADER_FLAG_WRITTEN)) { |
4827 | pin_down_extent(root, cache, buf->start, buf->len, 1); | 4782 | pin_down_extent(root, cache, buf->start, buf->len, 1); |
4828 | goto pin; | 4783 | goto out; |
4829 | } | 4784 | } |
4830 | 4785 | ||
4831 | WARN_ON(test_bit(EXTENT_BUFFER_DIRTY, &buf->bflags)); | 4786 | WARN_ON(test_bit(EXTENT_BUFFER_DIRTY, &buf->bflags)); |
4832 | 4787 | ||
4833 | btrfs_add_free_space(cache, buf->start, buf->len); | 4788 | btrfs_add_free_space(cache, buf->start, buf->len); |
4834 | btrfs_update_reserved_bytes(cache, buf->len, RESERVE_FREE); | 4789 | btrfs_update_reserved_bytes(cache, buf->len, RESERVE_FREE); |
4835 | |||
4836 | goto out; | ||
4837 | } | ||
4838 | pin: | ||
4839 | if (block_rsv->durable && !cache->ro) { | ||
4840 | ret = 0; | ||
4841 | spin_lock(&cache->lock); | ||
4842 | if (!cache->ro) { | ||
4843 | cache->reserved_pinned += buf->len; | ||
4844 | ret = 1; | ||
4845 | } | ||
4846 | spin_unlock(&cache->lock); | ||
4847 | |||
4848 | if (ret) { | ||
4849 | spin_lock(&block_rsv->lock); | ||
4850 | block_rsv->freed[trans->transid & 0x1] += buf->len; | ||
4851 | spin_unlock(&block_rsv->lock); | ||
4852 | } | ||
4853 | } | 4790 | } |
4854 | out: | 4791 | out: |
4855 | /* | 4792 | /* |
@@ -6705,12 +6642,9 @@ static int set_block_group_ro(struct btrfs_block_group_cache *cache, int force) | |||
6705 | cache->bytes_super - btrfs_block_group_used(&cache->item); | 6642 | cache->bytes_super - btrfs_block_group_used(&cache->item); |
6706 | 6643 | ||
6707 | if (sinfo->bytes_used + sinfo->bytes_reserved + sinfo->bytes_pinned + | 6644 | if (sinfo->bytes_used + sinfo->bytes_reserved + sinfo->bytes_pinned + |
6708 | sinfo->bytes_may_use + sinfo->bytes_readonly + | 6645 | sinfo->bytes_may_use + sinfo->bytes_readonly + num_bytes + |
6709 | cache->reserved_pinned + num_bytes + min_allocable_bytes <= | 6646 | min_allocable_bytes <= sinfo->total_bytes) { |
6710 | sinfo->total_bytes) { | ||
6711 | sinfo->bytes_readonly += num_bytes; | 6647 | sinfo->bytes_readonly += num_bytes; |
6712 | sinfo->bytes_may_use += cache->reserved_pinned; | ||
6713 | cache->reserved_pinned = 0; | ||
6714 | cache->ro = 1; | 6648 | cache->ro = 1; |
6715 | ret = 0; | 6649 | ret = 0; |
6716 | } | 6650 | } |
diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c index 5f5f8a577e6..6402a41b902 100644 --- a/fs/btrfs/inode.c +++ b/fs/btrfs/inode.c | |||
@@ -2164,9 +2164,6 @@ int btrfs_orphan_add(struct btrfs_trans_handle *trans, struct inode *inode) | |||
2164 | } | 2164 | } |
2165 | spin_unlock(&root->orphan_lock); | 2165 | spin_unlock(&root->orphan_lock); |
2166 | 2166 | ||
2167 | if (block_rsv) | ||
2168 | btrfs_add_durable_block_rsv(root->fs_info, block_rsv); | ||
2169 | |||
2170 | /* grab metadata reservation from transaction handle */ | 2167 | /* grab metadata reservation from transaction handle */ |
2171 | if (reserve) { | 2168 | if (reserve) { |
2172 | ret = btrfs_orphan_reserve_metadata(trans, inode); | 2169 | ret = btrfs_orphan_reserve_metadata(trans, inode); |
@@ -6505,7 +6502,6 @@ static int btrfs_truncate(struct inode *inode) | |||
6505 | rsv = btrfs_alloc_block_rsv(root); | 6502 | rsv = btrfs_alloc_block_rsv(root); |
6506 | if (!rsv) | 6503 | if (!rsv) |
6507 | return -ENOMEM; | 6504 | return -ENOMEM; |
6508 | btrfs_add_durable_block_rsv(root->fs_info, rsv); | ||
6509 | 6505 | ||
6510 | trans = btrfs_start_transaction(root, 4); | 6506 | trans = btrfs_start_transaction(root, 4); |
6511 | if (IS_ERR(trans)) { | 6507 | if (IS_ERR(trans)) { |
diff --git a/fs/btrfs/relocation.c b/fs/btrfs/relocation.c index 59bb1764273..545b0435824 100644 --- a/fs/btrfs/relocation.c +++ b/fs/btrfs/relocation.c | |||
@@ -3651,7 +3651,6 @@ int prepare_to_relocate(struct reloc_control *rc) | |||
3651 | return ret; | 3651 | return ret; |
3652 | 3652 | ||
3653 | rc->block_rsv->refill_used = 1; | 3653 | rc->block_rsv->refill_used = 1; |
3654 | btrfs_add_durable_block_rsv(rc->extent_root->fs_info, rc->block_rsv); | ||
3655 | 3654 | ||
3656 | memset(&rc->cluster, 0, sizeof(rc->cluster)); | 3655 | memset(&rc->cluster, 0, sizeof(rc->cluster)); |
3657 | rc->search_start = rc->block_group->key.objectid; | 3656 | rc->search_start = rc->block_group->key.objectid; |