diff options
-rw-r--r-- | fs/btrfs/extent-tree.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/fs/btrfs/extent-tree.c b/fs/btrfs/extent-tree.c index 9183f9cbc121..d8da538d01fb 100644 --- a/fs/btrfs/extent-tree.c +++ b/fs/btrfs/extent-tree.c | |||
@@ -4034,6 +4034,8 @@ static inline int calc_reclaim_items_nr(struct btrfs_root *root, u64 to_reclaim) | |||
4034 | return nr; | 4034 | return nr; |
4035 | } | 4035 | } |
4036 | 4036 | ||
4037 | #define EXTENT_SIZE_PER_ITEM (256 * 1024) | ||
4038 | |||
4037 | /* | 4039 | /* |
4038 | * shrink metadata reservation for delalloc | 4040 | * shrink metadata reservation for delalloc |
4039 | */ | 4041 | */ |
@@ -4050,6 +4052,10 @@ static void shrink_delalloc(struct btrfs_root *root, u64 to_reclaim, u64 orig, | |||
4050 | int loops; | 4052 | int loops; |
4051 | enum btrfs_reserve_flush_enum flush; | 4053 | enum btrfs_reserve_flush_enum flush; |
4052 | 4054 | ||
4055 | /* Calc the number of the pages we need flush for space reservation */ | ||
4056 | to_reclaim = calc_reclaim_items_nr(root, to_reclaim); | ||
4057 | to_reclaim *= EXTENT_SIZE_PER_ITEM; | ||
4058 | |||
4053 | trans = (struct btrfs_trans_handle *)current->journal_info; | 4059 | trans = (struct btrfs_trans_handle *)current->journal_info; |
4054 | block_rsv = &root->fs_info->delalloc_block_rsv; | 4060 | block_rsv = &root->fs_info->delalloc_block_rsv; |
4055 | space_info = block_rsv->space_info; | 4061 | space_info = block_rsv->space_info; |