aboutsummaryrefslogtreecommitdiff
path: root/include/linux/raid
diff options
context:
space:
mode:
authorFengguang Wu <[email protected]>2007-10-16 23:30:39 -0700
committerLinus Torvalds <[email protected]>2007-10-17 08:43:02 -0700
commit2c1365791048e8aff42138ed5f6040b3c7824a69 (patch)
tree3c8de64f6b4995125f3f6171fdf175232a412783 /include/linux/raid
parent0e0f4fc22ece8e593167eccbb1a4154565c11faa (diff)
writeback: fix time ordering of the per superblock inode lists 8
Streamline the management of dirty inode lists and fix time ordering bugs. The writeback logic used to move not-yet-expired dirty inodes from s_dirty to s_io, *only to* move them back. The move-inodes-back-and-forth thing is a mess, which is eliminated by this patch. The new scheme is: - s_dirty acts as a time ordered io delaying queue; - s_io/s_more_io together acts as an io dispatching queue. On kupdate writeback, we pull some inodes from s_dirty to s_io at the start of every full scan of s_io. Otherwise (i.e. for sync/throttle/background writeback), we always pull from s_dirty on each run (a partial scan). Note that the line list_splice_init(&sb->s_more_io, &sb->s_io); is moved to queue_io() to leave s_io empty. Otherwise a big dirtied file will sit in s_io for a long time, preventing new expired inodes to get in. Cc: Ken Chen <[email protected]> Cc: Andrew Morton <[email protected]> Signed-off-by: Fengguang Wu <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
Diffstat (limited to 'include/linux/raid')
0 files changed, 0 insertions, 0 deletions