aboutsummaryrefslogtreecommitdiffstats
path: root/fs
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2013-09-13 23:06:40 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2013-09-13 23:06:40 -0400
commit3711d86a2de17e967b576af8b8a1e9351a7d1466 (patch)
treef7d6028b81a475a83a6c2471645e0202b2b5f427 /fs
parent89dc77bcdabf42ec99553f5837aa4bb8255a088c (diff)
parenta8855990e382fc81c04187c5fdb48743307baf32 (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.c2
-rw-r--r--fs/fs-writeback.c8
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
595static inline int sb_is_blkdev_sb(struct super_block *sb) 595int 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 */