|
@@ -1171,6 +1171,8 @@ void __mark_inode_dirty(struct inode *inode, int flags)
|
|
|
bool wakeup_bdi = false;
|
|
|
bdi = inode_to_bdi(inode);
|
|
|
|
|
|
+ spin_unlock(&inode->i_lock);
|
|
|
+ spin_lock(&bdi->wb.list_lock);
|
|
|
if (bdi_cap_writeback_dirty(bdi)) {
|
|
|
WARN(!test_bit(BDI_registered, &bdi->state),
|
|
|
"bdi-%s not registered\n", bdi->name);
|
|
@@ -1185,8 +1187,6 @@ void __mark_inode_dirty(struct inode *inode, int flags)
|
|
|
wakeup_bdi = true;
|
|
|
}
|
|
|
|
|
|
- spin_unlock(&inode->i_lock);
|
|
|
- spin_lock(&bdi->wb.list_lock);
|
|
|
inode->dirtied_when = jiffies;
|
|
|
list_move(&inode->i_wb_list, &bdi->wb.b_dirty);
|
|
|
spin_unlock(&bdi->wb.list_lock);
|