summaryrefslogtreecommitdiffstats
path: root/fs
diff options
context:
space:
mode:
authorZhao Lei <zhaolei@cn.fujitsu.com>2015-02-17 10:25:51 +0100
committerChris Mason <clm@fb.com>2015-04-13 16:27:24 +0200
commit264ca0f60becac34395f3b42171ad0cc2e53ea6e (patch)
treeffe0eb263005f0e749f6a08e5f44763528b15d4d /fs
parentbtrfs: Fix tail space processing in find_free_dev_extent() (diff)
downloadlinux-264ca0f60becac34395f3b42171ad0cc2e53ea6e.tar.xz
linux-264ca0f60becac34395f3b42171ad0cc2e53ea6e.zip
btrfs: Adjust commit-transaction condition to avoid NO_SPACE more
If we have any chance to make a successful write, we should not give up. This patch adjust commit-transaction condition from: pinned >= wanted to left + pinned >= wanted Signed-off-by: Zhao Lei <zhaolei@cn.fujitsu.com> Signed-off-by: Chris Mason <clm@fb.com>
Diffstat (limited to 'fs')
-rw-r--r--fs/btrfs/extent-tree.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/fs/btrfs/extent-tree.c b/fs/btrfs/extent-tree.c
index 7b227a65078c..01f4db6554a1 100644
--- a/fs/btrfs/extent-tree.c
+++ b/fs/btrfs/extent-tree.c
@@ -3931,7 +3931,8 @@ alloc:
* don't bother committing the transaction.
*/
if (percpu_counter_compare(&data_sinfo->total_bytes_pinned,
- bytes) < 0)
+ used + bytes -
+ data_sinfo->total_bytes) < 0)
have_pinned_space = 0;
spin_unlock(&data_sinfo->lock);