aboutsummaryrefslogtreecommitdiffstats
path: root/fs/btrfs/extent-tree.c
diff options
context:
space:
mode:
authorChris Mason <chris.mason@oracle.com>2011-05-22 07:07:01 -0400
committerChris Mason <chris.mason@oracle.com>2011-05-22 07:07:01 -0400
commitdcc6d073225b6b732a52477c91bd4edc9b4d5502 (patch)
tree71da6844bb03c940c87c01a2a1f8c2e11cf85238 /fs/btrfs/extent-tree.c
parent0965537308ac3b267ea16e731bd73870a51c53b8 (diff)
parent16cdcec736cd214350cdb591bf1091f8beedefa0 (diff)
Merge branch 'delayed_inode' into inode_numbers
Conflicts: fs/btrfs/inode.c fs/btrfs/ioctl.c fs/btrfs/transaction.c Signed-off-by: Chris Mason <chris.mason@oracle.com>
Diffstat (limited to 'fs/btrfs/extent-tree.c')
-rw-r--r--fs/btrfs/extent-tree.c18
1 files changed, 6 insertions, 12 deletions
diff --git a/fs/btrfs/extent-tree.c b/fs/btrfs/extent-tree.c
index e530c20989fd..810d1f80b497 100644
--- a/fs/btrfs/extent-tree.c
+++ b/fs/btrfs/extent-tree.c
@@ -3975,12 +3975,6 @@ static void release_global_block_rsv(struct btrfs_fs_info *fs_info)
3975 WARN_ON(fs_info->chunk_block_rsv.reserved > 0); 3975 WARN_ON(fs_info->chunk_block_rsv.reserved > 0);
3976} 3976}
3977 3977
3978static u64 calc_trans_metadata_size(struct btrfs_root *root, int num_items)
3979{
3980 return (root->leafsize + root->nodesize * (BTRFS_MAX_LEVEL - 1)) *
3981 3 * num_items;
3982}
3983
3984int btrfs_trans_reserve_metadata(struct btrfs_trans_handle *trans, 3978int btrfs_trans_reserve_metadata(struct btrfs_trans_handle *trans,
3985 struct btrfs_root *root, 3979 struct btrfs_root *root,
3986 int num_items) 3980 int num_items)
@@ -3991,7 +3985,7 @@ int btrfs_trans_reserve_metadata(struct btrfs_trans_handle *trans,
3991 if (num_items == 0 || root->fs_info->chunk_root == root) 3985 if (num_items == 0 || root->fs_info->chunk_root == root)
3992 return 0; 3986 return 0;
3993 3987
3994 num_bytes = calc_trans_metadata_size(root, num_items); 3988 num_bytes = btrfs_calc_trans_metadata_size(root, num_items);
3995 ret = btrfs_block_rsv_add(trans, root, &root->fs_info->trans_block_rsv, 3989 ret = btrfs_block_rsv_add(trans, root, &root->fs_info->trans_block_rsv,
3996 num_bytes); 3990 num_bytes);
3997 if (!ret) { 3991 if (!ret) {
@@ -4030,14 +4024,14 @@ int btrfs_orphan_reserve_metadata(struct btrfs_trans_handle *trans,
4030 * If all of the metadata space is used, we can commit 4024 * If all of the metadata space is used, we can commit
4031 * transaction and use space it freed. 4025 * transaction and use space it freed.
4032 */ 4026 */
4033 u64 num_bytes = calc_trans_metadata_size(root, 4); 4027 u64 num_bytes = btrfs_calc_trans_metadata_size(root, 4);
4034 return block_rsv_migrate_bytes(src_rsv, dst_rsv, num_bytes); 4028 return block_rsv_migrate_bytes(src_rsv, dst_rsv, num_bytes);
4035} 4029}
4036 4030
4037void btrfs_orphan_release_metadata(struct inode *inode) 4031void btrfs_orphan_release_metadata(struct inode *inode)
4038{ 4032{
4039 struct btrfs_root *root = BTRFS_I(inode)->root; 4033 struct btrfs_root *root = BTRFS_I(inode)->root;
4040 u64 num_bytes = calc_trans_metadata_size(root, 4); 4034 u64 num_bytes = btrfs_calc_trans_metadata_size(root, 4);
4041 btrfs_block_rsv_release(root, root->orphan_block_rsv, num_bytes); 4035 btrfs_block_rsv_release(root, root->orphan_block_rsv, num_bytes);
4042} 4036}
4043 4037
@@ -4051,7 +4045,7 @@ int btrfs_snap_reserve_metadata(struct btrfs_trans_handle *trans,
4051 * two for root back/forward refs, two for directory entries 4045 * two for root back/forward refs, two for directory entries
4052 * and one for root of the snapshot. 4046 * and one for root of the snapshot.
4053 */ 4047 */
4054 u64 num_bytes = calc_trans_metadata_size(root, 5); 4048 u64 num_bytes = btrfs_calc_trans_metadata_size(root, 5);
4055 dst_rsv->space_info = src_rsv->space_info; 4049 dst_rsv->space_info = src_rsv->space_info;
4056 return block_rsv_migrate_bytes(src_rsv, dst_rsv, num_bytes); 4050 return block_rsv_migrate_bytes(src_rsv, dst_rsv, num_bytes);
4057} 4051}
@@ -4080,7 +4074,7 @@ int btrfs_delalloc_reserve_metadata(struct inode *inode, u64 num_bytes)
4080 4074
4081 if (nr_extents > reserved_extents) { 4075 if (nr_extents > reserved_extents) {
4082 nr_extents -= reserved_extents; 4076 nr_extents -= reserved_extents;
4083 to_reserve = calc_trans_metadata_size(root, nr_extents); 4077 to_reserve = btrfs_calc_trans_metadata_size(root, nr_extents);
4084 } else { 4078 } else {
4085 nr_extents = 0; 4079 nr_extents = 0;
4086 to_reserve = 0; 4080 to_reserve = 0;
@@ -4134,7 +4128,7 @@ void btrfs_delalloc_release_metadata(struct inode *inode, u64 num_bytes)
4134 4128
4135 to_free = calc_csum_metadata_size(inode, num_bytes); 4129 to_free = calc_csum_metadata_size(inode, num_bytes);
4136 if (nr_extents > 0) 4130 if (nr_extents > 0)
4137 to_free += calc_trans_metadata_size(root, nr_extents); 4131 to_free += btrfs_calc_trans_metadata_size(root, nr_extents);
4138 4132
4139 btrfs_block_rsv_release(root, &root->fs_info->delalloc_block_rsv, 4133 btrfs_block_rsv_release(root, &root->fs_info->delalloc_block_rsv,
4140 to_free); 4134 to_free);