diff options
Diffstat (limited to 'fs/btrfs/extent-tree.c')
-rw-r--r-- | fs/btrfs/extent-tree.c | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/fs/btrfs/extent-tree.c b/fs/btrfs/extent-tree.c index fb5c76795eda..5e0e6bcf67b9 100644 --- a/fs/btrfs/extent-tree.c +++ b/fs/btrfs/extent-tree.c | |||
@@ -4034,15 +4034,14 @@ static void shrink_delalloc(struct btrfs_root *root, u64 to_reclaim, u64 orig, | |||
4034 | u64 delalloc_bytes; | 4034 | u64 delalloc_bytes; |
4035 | u64 max_reclaim; | 4035 | u64 max_reclaim; |
4036 | long time_left; | 4036 | long time_left; |
4037 | unsigned long nr_pages = (2 * 1024 * 1024) >> PAGE_CACHE_SHIFT; | 4037 | unsigned long nr_pages; |
4038 | int loops = 0; | 4038 | int loops; |
4039 | enum btrfs_reserve_flush_enum flush; | 4039 | enum btrfs_reserve_flush_enum flush; |
4040 | 4040 | ||
4041 | trans = (struct btrfs_trans_handle *)current->journal_info; | 4041 | trans = (struct btrfs_trans_handle *)current->journal_info; |
4042 | block_rsv = &root->fs_info->delalloc_block_rsv; | 4042 | block_rsv = &root->fs_info->delalloc_block_rsv; |
4043 | space_info = block_rsv->space_info; | 4043 | space_info = block_rsv->space_info; |
4044 | 4044 | ||
4045 | smp_mb(); | ||
4046 | delalloc_bytes = percpu_counter_sum_positive( | 4045 | delalloc_bytes = percpu_counter_sum_positive( |
4047 | &root->fs_info->delalloc_bytes); | 4046 | &root->fs_info->delalloc_bytes); |
4048 | if (delalloc_bytes == 0) { | 4047 | if (delalloc_bytes == 0) { |
@@ -4052,6 +4051,7 @@ static void shrink_delalloc(struct btrfs_root *root, u64 to_reclaim, u64 orig, | |||
4052 | return; | 4051 | return; |
4053 | } | 4052 | } |
4054 | 4053 | ||
4054 | loops = 0; | ||
4055 | while (delalloc_bytes && loops < 3) { | 4055 | while (delalloc_bytes && loops < 3) { |
4056 | max_reclaim = min(delalloc_bytes, to_reclaim); | 4056 | max_reclaim = min(delalloc_bytes, to_reclaim); |
4057 | nr_pages = max_reclaim >> PAGE_CACHE_SHIFT; | 4057 | nr_pages = max_reclaim >> PAGE_CACHE_SHIFT; |
@@ -4082,7 +4082,6 @@ static void shrink_delalloc(struct btrfs_root *root, u64 to_reclaim, u64 orig, | |||
4082 | if (time_left) | 4082 | if (time_left) |
4083 | break; | 4083 | break; |
4084 | } | 4084 | } |
4085 | smp_mb(); | ||
4086 | delalloc_bytes = percpu_counter_sum_positive( | 4085 | delalloc_bytes = percpu_counter_sum_positive( |
4087 | &root->fs_info->delalloc_bytes); | 4086 | &root->fs_info->delalloc_bytes); |
4088 | } | 4087 | } |