aboutsummaryrefslogtreecommitdiffstats
path: root/fs/btrfs/file.c
diff options
context:
space:
mode:
authorChris Mason <chris.mason@oracle.com>2008-07-29 16:15:18 -0400
committerChris Mason <chris.mason@oracle.com>2008-09-25 11:04:05 -0400
commitab78c84de1ce4db1b2a2cef361625ad80abbab3f (patch)
treea9726645832b50da1da9a9690c4200c0f198ce7d /fs/btrfs/file.c
parent1a3f5d0400d786aec41ede15fec5710ad1a1d18b (diff)
Btrfs: Throttle operations if the reference cache gets too large
A large reference cache is directly related to a lot of work pending for the cleaner thread. This throttles back new operations based on the size of the reference cache so the cleaner thread will be able to keep up. Overall, this actually makes the FS faster because the cleaner thread will be more likely to find things in cache. Signed-off-by: Chris Mason <chris.mason@oracle.com>
Diffstat (limited to 'fs/btrfs/file.c')
-rw-r--r--fs/btrfs/file.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/fs/btrfs/file.c b/fs/btrfs/file.c
index 3efec25e34b0..ded5281f8463 100644
--- a/fs/btrfs/file.c
+++ b/fs/btrfs/file.c
@@ -974,6 +974,7 @@ static ssize_t btrfs_file_write(struct file *file, const char __user *buf,
974 balance_dirty_pages_ratelimited_nr(inode->i_mapping, num_pages); 974 balance_dirty_pages_ratelimited_nr(inode->i_mapping, num_pages);
975 if (num_pages < (root->leafsize >> PAGE_CACHE_SHIFT) + 1) 975 if (num_pages < (root->leafsize >> PAGE_CACHE_SHIFT) + 1)
976 btrfs_btree_balance_dirty(root, 1); 976 btrfs_btree_balance_dirty(root, 1);
977 btrfs_throttle(root);
977 cond_resched(); 978 cond_resched();
978 } 979 }
979out: 980out: