diff options
author | Fengguang Wu <wfg@mail.ustc.edu.cn> | 2007-10-17 02:30:39 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-10-17 11:43:02 -0400 |
commit | 08d8e9749e7f0435ba4683b620e8d30d59276b4c (patch) | |
tree | a973ab68d1f10f02e13f8d536ba0bf2cb8f2ffba /fs/fs-writeback.c | |
parent | 2c1365791048e8aff42138ed5f6040b3c7824a69 (diff) |
writeback: fix ntfs with sb_has_dirty_inodes()
NTFS's if-condition on dirty inodes is not complete. Fix it with
sb_has_dirty_inodes().
Cc: Anton Altaparmakov <aia21@cantab.net>
Cc: Ken Chen <kenchen@google.com>
Signed-off-by: Fengguang Wu <wfg@mail.ustc.edu.cn>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'fs/fs-writeback.c')
-rw-r--r-- | fs/fs-writeback.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/fs/fs-writeback.c b/fs/fs-writeback.c index 1f22fb5217c0..414df43706c7 100644 --- a/fs/fs-writeback.c +++ b/fs/fs-writeback.c | |||
@@ -199,6 +199,14 @@ static void queue_io(struct super_block *sb, | |||
199 | move_expired_inodes(&sb->s_dirty, &sb->s_io, older_than_this); | 199 | move_expired_inodes(&sb->s_dirty, &sb->s_io, older_than_this); |
200 | } | 200 | } |
201 | 201 | ||
202 | int sb_has_dirty_inodes(struct super_block *sb) | ||
203 | { | ||
204 | return !list_empty(&sb->s_dirty) || | ||
205 | !list_empty(&sb->s_io) || | ||
206 | !list_empty(&sb->s_more_io); | ||
207 | } | ||
208 | EXPORT_SYMBOL(sb_has_dirty_inodes); | ||
209 | |||
202 | /* | 210 | /* |
203 | * Write a single inode's dirty pages and inode data out to disk. | 211 | * Write a single inode's dirty pages and inode data out to disk. |
204 | * If `wait' is set, wait on the writeout. | 212 | * If `wait' is set, wait on the writeout. |
@@ -497,7 +505,7 @@ writeback_inodes(struct writeback_control *wbc) | |||
497 | restart: | 505 | restart: |
498 | sb = sb_entry(super_blocks.prev); | 506 | sb = sb_entry(super_blocks.prev); |
499 | for (; sb != sb_entry(&super_blocks); sb = sb_entry(sb->s_list.prev)) { | 507 | for (; sb != sb_entry(&super_blocks); sb = sb_entry(sb->s_list.prev)) { |
500 | if (!list_empty(&sb->s_dirty) || !list_empty(&sb->s_io)) { | 508 | if (sb_has_dirty_inodes(sb)) { |
501 | /* we're making our own get_super here */ | 509 | /* we're making our own get_super here */ |
502 | sb->s_count++; | 510 | sb->s_count++; |
503 | spin_unlock(&sb_lock); | 511 | spin_unlock(&sb_lock); |