From: Kirill Korotaev This patch reaaranges inode_lock taking in writeback_inodes(). It narrows down use of inode_lock and removes unneccassary nesting of sb_lock and inode_lock. Instead of holding inode_lock for all the time I moved it around sync_sb_inodes() as it is in all other places. Signed-Off-By: Kirill Korotaev Signed-off-by: Andrew Morton --- 25-akpm/fs/fs-writeback.c | 7 ++++--- 1 files changed, 4 insertions(+), 3 deletions(-) diff -puN fs/fs-writeback.c~rearrange-of-inode_lock-in-writeback_inodes fs/fs-writeback.c --- 25/fs/fs-writeback.c~rearrange-of-inode_lock-in-writeback_inodes Tue Sep 14 18:04:31 2004 +++ 25-akpm/fs/fs-writeback.c Tue Sep 14 18:04:53 2004 @@ -421,7 +421,6 @@ writeback_inodes(struct writeback_contro struct super_block *sb; might_sleep(); - spin_lock(&inode_lock); spin_lock(&sb_lock); restart: sb = sb_entry(super_blocks.prev); @@ -436,8 +435,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); @@ -448,7 +450,6 @@ restart: break; } spin_unlock(&sb_lock); - spin_unlock(&inode_lock); } /* _