diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2013-09-13 23:06:40 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2013-09-13 23:06:40 -0400 |
commit | 3711d86a2de17e967b576af8b8a1e9351a7d1466 (patch) | |
tree | f7d6028b81a475a83a6c2471645e0202b2b5f427 /fs | |
parent | 89dc77bcdabf42ec99553f5837aa4bb8255a088c (diff) | |
parent | a8855990e382fc81c04187c5fdb48743307baf32 (diff) |
Merge tag 'writeback-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/wfg/linux
Pull writeback fix from Wu Fengguang:
"A trivial writeback fix"
* tag 'writeback-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/wfg/linux:
writeback: Do not sort b_io list only because of block device inode
Diffstat (limited to 'fs')
-rw-r--r-- | fs/block_dev.c | 2 | ||||
-rw-r--r-- | fs/fs-writeback.c | 8 |
2 files changed, 6 insertions, 4 deletions
diff --git a/fs/block_dev.c b/fs/block_dev.c index c3549ed58038..1e86823a9cbd 100644 --- a/fs/block_dev.c +++ b/fs/block_dev.c | |||
@@ -592,7 +592,7 @@ static struct block_device *bd_acquire(struct inode *inode) | |||
592 | return bdev; | 592 | return bdev; |
593 | } | 593 | } |
594 | 594 | ||
595 | static inline int sb_is_blkdev_sb(struct super_block *sb) | 595 | int sb_is_blkdev_sb(struct super_block *sb) |
596 | { | 596 | { |
597 | return sb == blockdev_superblock; | 597 | return sb == blockdev_superblock; |
598 | } | 598 | } |
diff --git a/fs/fs-writeback.c b/fs/fs-writeback.c index 30f6f27d5a59..9f4935b8f208 100644 --- a/fs/fs-writeback.c +++ b/fs/fs-writeback.c | |||
@@ -69,7 +69,7 @@ static inline struct backing_dev_info *inode_to_bdi(struct inode *inode) | |||
69 | { | 69 | { |
70 | struct super_block *sb = inode->i_sb; | 70 | struct super_block *sb = inode->i_sb; |
71 | 71 | ||
72 | if (strcmp(sb->s_type->name, "bdev") == 0) | 72 | if (sb_is_blkdev_sb(sb)) |
73 | return inode->i_mapping->backing_dev_info; | 73 | return inode->i_mapping->backing_dev_info; |
74 | 74 | ||
75 | return sb->s_bdi; | 75 | return sb->s_bdi; |
@@ -251,11 +251,13 @@ static int move_expired_inodes(struct list_head *delaying_queue, | |||
251 | if (work->older_than_this && | 251 | if (work->older_than_this && |
252 | inode_dirtied_after(inode, *work->older_than_this)) | 252 | inode_dirtied_after(inode, *work->older_than_this)) |
253 | break; | 253 | break; |
254 | list_move(&inode->i_wb_list, &tmp); | ||
255 | moved++; | ||
256 | if (sb_is_blkdev_sb(inode->i_sb)) | ||
257 | continue; | ||
254 | if (sb && sb != inode->i_sb) | 258 | if (sb && sb != inode->i_sb) |
255 | do_sb_sort = 1; | 259 | do_sb_sort = 1; |
256 | sb = inode->i_sb; | 260 | sb = inode->i_sb; |
257 | list_move(&inode->i_wb_list, &tmp); | ||
258 | moved++; | ||
259 | } | 261 | } |
260 | 262 | ||
261 | /* just one sb in list, splice to dispatch_queue and we're done */ | 263 | /* just one sb in list, splice to dispatch_queue and we're done */ |