From 8aa32ecc581d9790f899b16ea508b1be3b7448a2 Mon Sep 17 00:00:00 2001 From: Chris Mason Date: Tue, 27 Nov 2007 07:52:01 -0800 Subject: [PATCH] --- yaml --- r: 128553 b: refs/heads/master c: 448d640b668dae3928591e83f2bf4ca9f4c06e52 h: refs/heads/master i: 128551: 7b2d688faee4565692c28cb6e5a476665a231aa4 v: v3 --- [refs] | 2 +- trunk/fs/btrfs/disk-io.c | 4 ++++ trunk/fs/btrfs/file.c | 3 ++- 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index fa2294c80a86..540aded062f9 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 8790bad7fb5ac4929dcd52c5dd8d6b81f8c05be8 +refs/heads/master: 448d640b668dae3928591e83f2bf4ca9f4c06e52 diff --git a/trunk/fs/btrfs/disk-io.c b/trunk/fs/btrfs/disk-io.c index 8a74f9027d65..de0552532d23 100644 --- a/trunk/fs/btrfs/disk-io.c +++ b/trunk/fs/btrfs/disk-io.c @@ -214,6 +214,10 @@ static int btree_writepages(struct address_space *mapping, u64 num_dirty; u64 start = 0; unsigned long thresh = 96 * 1024 * 1024; + + if (wbc->for_kupdate) + return 0; + num_dirty = count_range_bits(tree, &start, thresh, EXTENT_DIRTY); if (num_dirty < thresh) { return 0; diff --git a/trunk/fs/btrfs/file.c b/trunk/fs/btrfs/file.c index 9dd2c5c23b56..ba624ae16e61 100644 --- a/trunk/fs/btrfs/file.c +++ b/trunk/fs/btrfs/file.c @@ -767,7 +767,8 @@ static ssize_t btrfs_file_write(struct file *file, const char __user *buf, num_written += write_bytes; balance_dirty_pages_ratelimited_nr(inode->i_mapping, num_pages); - btrfs_btree_balance_dirty(root, 1); + if (num_pages < (root->leafsize >> PAGE_CACHE_SHIFT) + 1) + btrfs_btree_balance_dirty(root, 1); cond_resched(); } mutex_unlock(&inode->i_mutex);