diff options
| -rw-r--r-- | fs/fs-writeback.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/fs/fs-writeback.c b/fs/fs-writeback.c index fe1825d45f5a..da522d511f2d 100644 --- a/fs/fs-writeback.c +++ b/fs/fs-writeback.c @@ -403,7 +403,6 @@ writeback_inodes(struct writeback_control *wbc) struct super_block *sb; might_sleep(); - spin_lock(&inode_lock); spin_lock(&sb_lock); restart: sb = sb_entry(super_blocks.prev); @@ -418,8 +417,11 @@ restart: * be unmounted by the time it is released. */ if (down_read_trylock(&sb->s_umount)) { - if (sb->s_root) + if (sb->s_root) { + spin_lock(&inode_lock); sync_sb_inodes(sb, wbc); + spin_unlock(&inode_lock); + } up_read(&sb->s_umount); } spin_lock(&sb_lock); @@ -430,7 +432,6 @@ restart: break; } spin_unlock(&sb_lock); - spin_unlock(&inode_lock); } /* |
