aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--fs/btrfs/free-space-cache.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/fs/btrfs/free-space-cache.c b/fs/btrfs/free-space-cache.c
index 60d684266959..42f4015988ec 100644
--- a/fs/btrfs/free-space-cache.c
+++ b/fs/btrfs/free-space-cache.c
@@ -1016,14 +1016,18 @@ static void recalculate_thresholds(struct btrfs_block_group_cache *block_group)
1016 u64 max_bytes; 1016 u64 max_bytes;
1017 u64 bitmap_bytes; 1017 u64 bitmap_bytes;
1018 u64 extent_bytes; 1018 u64 extent_bytes;
1019 u64 size = block_group->key.offset;
1019 1020
1020 /* 1021 /*
1021 * The goal is to keep the total amount of memory used per 1gb of space 1022 * The goal is to keep the total amount of memory used per 1gb of space
1022 * at or below 32k, so we need to adjust how much memory we allow to be 1023 * at or below 32k, so we need to adjust how much memory we allow to be
1023 * used by extent based free space tracking 1024 * used by extent based free space tracking
1024 */ 1025 */
1025 max_bytes = MAX_CACHE_BYTES_PER_GIG * 1026 if (size < 1024 * 1024 * 1024)
1026 (div64_u64(block_group->key.offset, 1024 * 1024 * 1024)); 1027 max_bytes = MAX_CACHE_BYTES_PER_GIG;
1028 else
1029 max_bytes = MAX_CACHE_BYTES_PER_GIG *
1030 div64_u64(size, 1024 * 1024 * 1024);
1027 1031
1028 /* 1032 /*
1029 * we want to account for 1 more bitmap than what we have so we can make 1033 * we want to account for 1 more bitmap than what we have so we can make