diff options
author | Edward Shishkin <edward.shishkin@gmail.com> | 2010-03-11 14:09:47 -0800 |
---|---|---|
committer | Jens Axboe <jens.axboe@oracle.com> | 2010-03-12 10:03:42 +0100 |
commit | f11c9c5c259cb2c3d698548dc3936f773ab1f5b9 (patch) | |
tree | c6461c9d6981122e1507dafa0394901903eb2ca1 /include/linux | |
parent | c12ec0a2d94001003dfb929ce14c287fca0522b0 (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.h | 3 |
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 */ |