summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLiu Bo <liubo2009@cn.fujitsu.com>2012-02-23 10:49:04 -0500
committerChris Mason <chris.mason@oracle.com>2012-02-23 10:49:04 -0500
commit5500cdbe14d7435e04f66ff3cfb8ecd8b8e44ebf (patch)
treee09399d4a56fcbad38765fd24c7c6e8782f438de
parent506531905296d6aee84480c879b25ea98c3f9db6 (diff)
downloadtalos-op-linux-5500cdbe14d7435e04f66ff3cfb8ecd8b8e44ebf.tar.gz
talos-op-linux-5500cdbe14d7435e04f66ff3cfb8ecd8b8e44ebf.zip
Btrfs: increase the global block reserve estimates
When doing IO with large amounts of data fragmentation, the global block reserve calulations are too low. This increases them to avoid ENOSPC crashes. Signed-off-by: Liu Bo <liubo2009@cn.fujitsu.com> Signed-off-by: Chris Mason <chris.mason@oracle.com>
-rw-r--r--fs/btrfs/extent-tree.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/fs/btrfs/extent-tree.c b/fs/btrfs/extent-tree.c
index dc083f55bcfd..079e5a1c343c 100644
--- a/fs/btrfs/extent-tree.c
+++ b/fs/btrfs/extent-tree.c
@@ -4108,7 +4108,7 @@ static u64 calc_global_metadata_size(struct btrfs_fs_info *fs_info)
num_bytes += div64_u64(data_used + meta_used, 50);
if (num_bytes * 3 > meta_used)
- num_bytes = div64_u64(meta_used, 3);
+ num_bytes = div64_u64(meta_used, 3) * 2;
return ALIGN(num_bytes, fs_info->extent_root->leafsize << 10);
}
OpenPOWER on IntegriCloud