diff options
Diffstat (limited to 'fs/btrfs/extent-tree.c')
-rw-r--r-- | fs/btrfs/extent-tree.c | 18 |
1 files changed, 6 insertions, 12 deletions
diff --git a/fs/btrfs/extent-tree.c b/fs/btrfs/extent-tree.c index 9ee6bd55e16c..7b0433866f36 100644 --- a/fs/btrfs/extent-tree.c +++ b/fs/btrfs/extent-tree.c | |||
@@ -3973,12 +3973,6 @@ static void release_global_block_rsv(struct btrfs_fs_info *fs_info) | |||
3973 | WARN_ON(fs_info->chunk_block_rsv.reserved > 0); | 3973 | WARN_ON(fs_info->chunk_block_rsv.reserved > 0); |
3974 | } | 3974 | } |
3975 | 3975 | ||
3976 | static u64 calc_trans_metadata_size(struct btrfs_root *root, int num_items) | ||
3977 | { | ||
3978 | return (root->leafsize + root->nodesize * (BTRFS_MAX_LEVEL - 1)) * | ||
3979 | 3 * num_items; | ||
3980 | } | ||
3981 | |||
3982 | int btrfs_trans_reserve_metadata(struct btrfs_trans_handle *trans, | 3976 | int btrfs_trans_reserve_metadata(struct btrfs_trans_handle *trans, |
3983 | struct btrfs_root *root, | 3977 | struct btrfs_root *root, |
3984 | int num_items) | 3978 | int num_items) |
@@ -3989,7 +3983,7 @@ int btrfs_trans_reserve_metadata(struct btrfs_trans_handle *trans, | |||
3989 | if (num_items == 0 || root->fs_info->chunk_root == root) | 3983 | if (num_items == 0 || root->fs_info->chunk_root == root) |
3990 | return 0; | 3984 | return 0; |
3991 | 3985 | ||
3992 | num_bytes = calc_trans_metadata_size(root, num_items); | 3986 | num_bytes = btrfs_calc_trans_metadata_size(root, num_items); |
3993 | ret = btrfs_block_rsv_add(trans, root, &root->fs_info->trans_block_rsv, | 3987 | ret = btrfs_block_rsv_add(trans, root, &root->fs_info->trans_block_rsv, |
3994 | num_bytes); | 3988 | num_bytes); |
3995 | if (!ret) { | 3989 | if (!ret) { |
@@ -4028,14 +4022,14 @@ int btrfs_orphan_reserve_metadata(struct btrfs_trans_handle *trans, | |||
4028 | * If all of the metadata space is used, we can commit | 4022 | * If all of the metadata space is used, we can commit |
4029 | * transaction and use space it freed. | 4023 | * transaction and use space it freed. |
4030 | */ | 4024 | */ |
4031 | u64 num_bytes = calc_trans_metadata_size(root, 4); | 4025 | u64 num_bytes = btrfs_calc_trans_metadata_size(root, 4); |
4032 | return block_rsv_migrate_bytes(src_rsv, dst_rsv, num_bytes); | 4026 | return block_rsv_migrate_bytes(src_rsv, dst_rsv, num_bytes); |
4033 | } | 4027 | } |
4034 | 4028 | ||
4035 | void btrfs_orphan_release_metadata(struct inode *inode) | 4029 | void btrfs_orphan_release_metadata(struct inode *inode) |
4036 | { | 4030 | { |
4037 | struct btrfs_root *root = BTRFS_I(inode)->root; | 4031 | struct btrfs_root *root = BTRFS_I(inode)->root; |
4038 | u64 num_bytes = calc_trans_metadata_size(root, 4); | 4032 | u64 num_bytes = btrfs_calc_trans_metadata_size(root, 4); |
4039 | btrfs_block_rsv_release(root, root->orphan_block_rsv, num_bytes); | 4033 | btrfs_block_rsv_release(root, root->orphan_block_rsv, num_bytes); |
4040 | } | 4034 | } |
4041 | 4035 | ||
@@ -4049,7 +4043,7 @@ int btrfs_snap_reserve_metadata(struct btrfs_trans_handle *trans, | |||
4049 | * two for root back/forward refs, two for directory entries | 4043 | * two for root back/forward refs, two for directory entries |
4050 | * and one for root of the snapshot. | 4044 | * and one for root of the snapshot. |
4051 | */ | 4045 | */ |
4052 | u64 num_bytes = calc_trans_metadata_size(root, 5); | 4046 | u64 num_bytes = btrfs_calc_trans_metadata_size(root, 5); |
4053 | dst_rsv->space_info = src_rsv->space_info; | 4047 | dst_rsv->space_info = src_rsv->space_info; |
4054 | return block_rsv_migrate_bytes(src_rsv, dst_rsv, num_bytes); | 4048 | return block_rsv_migrate_bytes(src_rsv, dst_rsv, num_bytes); |
4055 | } | 4049 | } |
@@ -4078,7 +4072,7 @@ int btrfs_delalloc_reserve_metadata(struct inode *inode, u64 num_bytes) | |||
4078 | 4072 | ||
4079 | if (nr_extents > reserved_extents) { | 4073 | if (nr_extents > reserved_extents) { |
4080 | nr_extents -= reserved_extents; | 4074 | nr_extents -= reserved_extents; |
4081 | to_reserve = calc_trans_metadata_size(root, nr_extents); | 4075 | to_reserve = btrfs_calc_trans_metadata_size(root, nr_extents); |
4082 | } else { | 4076 | } else { |
4083 | nr_extents = 0; | 4077 | nr_extents = 0; |
4084 | to_reserve = 0; | 4078 | to_reserve = 0; |
@@ -4132,7 +4126,7 @@ void btrfs_delalloc_release_metadata(struct inode *inode, u64 num_bytes) | |||
4132 | 4126 | ||
4133 | to_free = calc_csum_metadata_size(inode, num_bytes); | 4127 | to_free = calc_csum_metadata_size(inode, num_bytes); |
4134 | if (nr_extents > 0) | 4128 | if (nr_extents > 0) |
4135 | to_free += calc_trans_metadata_size(root, nr_extents); | 4129 | to_free += btrfs_calc_trans_metadata_size(root, nr_extents); |
4136 | 4130 | ||
4137 | btrfs_block_rsv_release(root, &root->fs_info->delalloc_block_rsv, | 4131 | btrfs_block_rsv_release(root, &root->fs_info->delalloc_block_rsv, |
4138 | to_free); | 4132 | to_free); |