diff options
-rw-r--r-- | fs/btrfs/free-space-cache.c | 8 |
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 |