diff options
author | Chris Mason <chris.mason@oracle.com> | 2011-05-22 07:07:01 -0400 |
---|---|---|
committer | Chris Mason <chris.mason@oracle.com> | 2011-05-22 07:07:01 -0400 |
commit | dcc6d073225b6b732a52477c91bd4edc9b4d5502 (patch) | |
tree | 71da6844bb03c940c87c01a2a1f8c2e11cf85238 /fs/btrfs/extent-tree.c | |
parent | 0965537308ac3b267ea16e731bd73870a51c53b8 (diff) | |
parent | 16cdcec736cd214350cdb591bf1091f8beedefa0 (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.c | 18 |
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 | ||
3978 | static 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 | |||
3984 | int btrfs_trans_reserve_metadata(struct btrfs_trans_handle *trans, | 3978 | int 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 | ||
4037 | void btrfs_orphan_release_metadata(struct inode *inode) | 4031 | void 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); |