aboutsummaryrefslogtreecommitdiffstats
path: root/fs/nfs
diff options
context:
space:
mode:
authorPeter Zijlstra <a.p.zijlstra@chello.nl>2007-10-16 23:25:41 -0700
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2007-10-17 08:42:44 -0700
commitc4dc4beed23827e155d7cbc2a1ffa3949eddd194 (patch)
treeb7f115c159fe26b90b7e5b7d5dcf2f9318b69bf1 /fs/nfs
parent1f7d6668c29b1dfa307a44844f9bb38356fc989b (diff)
downloadkernel_samsung_tuna-c4dc4beed23827e155d7cbc2a1ffa3949eddd194.zip
kernel_samsung_tuna-c4dc4beed23827e155d7cbc2a1ffa3949eddd194.tar.gz
kernel_samsung_tuna-c4dc4beed23827e155d7cbc2a1ffa3949eddd194.tar.bz2
nfs: remove congestion_end()
These patches aim to improve balance_dirty_pages() and directly address three issues: 1) inter device starvation 2) stacked device deadlocks 3) inter process starvation 1 and 2 are a direct result from removing the global dirty limit and using per device dirty limits. By giving each device its own dirty limit is will no longer starve another device, and the cyclic dependancy on the dirty limit is broken. In order to efficiently distribute the dirty limit across the independant devices a floating proportion is used, this will allocate a share of the total limit proportional to the device's recent activity. 3 is done by also scaling the dirty limit proportional to the current task's recent dirty rate. This patch: nfs: remove congestion_end(). It's redundant, clear_bdi_congested() already wakes the waiters. Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl> Cc: Trond Myklebust <trond.myklebust@fys.uio.no> Cc: "J. Bruce Fields" <bfields@fieldses.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'fs/nfs')
-rw-r--r--fs/nfs/write.c4
1 files changed, 1 insertions, 3 deletions
diff --git a/fs/nfs/write.c b/fs/nfs/write.c
index e2bb66c..82d7ee9 100644
--- a/fs/nfs/write.c
+++ b/fs/nfs/write.c
@@ -242,10 +242,8 @@ static void nfs_end_page_writeback(struct page *page)
struct nfs_server *nfss = NFS_SERVER(inode);
end_page_writeback(page);
- if (atomic_long_dec_return(&nfss->writeback) < NFS_CONGESTION_OFF_THRESH) {
+ if (atomic_long_dec_return(&nfss->writeback) < NFS_CONGESTION_OFF_THRESH)
clear_bdi_congested(&nfss->backing_dev_info, WRITE);
- congestion_end(WRITE);
- }
}
/*