diff options
-rw-r--r-- | fs/fs-writeback.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/fs/fs-writeback.c b/fs/fs-writeback.c index 54b3c31c2f0d..30f6f27d5a59 100644 --- a/fs/fs-writeback.c +++ b/fs/fs-writeback.c | |||
@@ -1171,6 +1171,8 @@ void __mark_inode_dirty(struct inode *inode, int flags) | |||
1171 | bool wakeup_bdi = false; | 1171 | bool wakeup_bdi = false; |
1172 | bdi = inode_to_bdi(inode); | 1172 | bdi = inode_to_bdi(inode); |
1173 | 1173 | ||
1174 | spin_unlock(&inode->i_lock); | ||
1175 | spin_lock(&bdi->wb.list_lock); | ||
1174 | if (bdi_cap_writeback_dirty(bdi)) { | 1176 | if (bdi_cap_writeback_dirty(bdi)) { |
1175 | WARN(!test_bit(BDI_registered, &bdi->state), | 1177 | WARN(!test_bit(BDI_registered, &bdi->state), |
1176 | "bdi-%s not registered\n", bdi->name); | 1178 | "bdi-%s not registered\n", bdi->name); |
@@ -1185,8 +1187,6 @@ void __mark_inode_dirty(struct inode *inode, int flags) | |||
1185 | wakeup_bdi = true; | 1187 | wakeup_bdi = true; |
1186 | } | 1188 | } |
1187 | 1189 | ||
1188 | spin_unlock(&inode->i_lock); | ||
1189 | spin_lock(&bdi->wb.list_lock); | ||
1190 | inode->dirtied_when = jiffies; | 1190 | inode->dirtied_when = jiffies; |
1191 | list_move(&inode->i_wb_list, &bdi->wb.b_dirty); | 1191 | list_move(&inode->i_wb_list, &bdi->wb.b_dirty); |
1192 | spin_unlock(&bdi->wb.list_lock); | 1192 | spin_unlock(&bdi->wb.list_lock); |