summaryrefslogtreecommitdiffstats
path: root/include/linux
diff options
context:
space:
mode:
authorEdward Shishkin <edward.shishkin@gmail.com>2010-03-11 14:09:47 -0800
committerJens Axboe <jens.axboe@oracle.com>2010-03-12 10:03:42 +0100
commitf11c9c5c259cb2c3d698548dc3936f773ab1f5b9 (patch)
treec6461c9d6981122e1507dafa0394901903eb2ca1 /include/linux
parentc12ec0a2d94001003dfb929ce14c287fca0522b0 (diff)
vfs: improve writeback_inodes_wb()
Do not pin/unpin superblock for every inode in writeback_inodes_wb(), pin it for the whole group of inodes which belong to the same superblock and call writeback_sb_inodes() handler for them. Signed-off-by: Edward Shishkin <edward.shishkin@gmail.com> Cc: Jens Axboe <jens.axboe@oracle.com> Cc: Wu Fengguang <fengguang.wu@intel.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/writeback.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/include/linux/writeback.h b/include/linux/writeback.h
index 76e8903cd20..36520ded3e0 100644
--- a/include/linux/writeback.h
+++ b/include/linux/writeback.h
@@ -34,6 +34,9 @@ struct writeback_control {
enum writeback_sync_modes sync_mode;
unsigned long *older_than_this; /* If !NULL, only write back inodes
older than this */
+ unsigned long wb_start; /* Time writeback_inodes_wb was
+ called. This is needed to avoid
+ extra jobs and livelock */
long nr_to_write; /* Write this many pages, and decrement
this for each page written */
long pages_skipped; /* Pages which were not written */