We should update inode page under protection of cp_rwsem lock, otherwise new dirty inode pages will generated by ->fsync or ->write_inode during checkpoint, which should not be allowed.
Signed-off-by: Chao Yu <[email protected]> --- fs/f2fs/inode.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/fs/f2fs/inode.c b/fs/f2fs/inode.c index cb269c4..cdfe114 100644 --- a/fs/f2fs/inode.c +++ b/fs/f2fs/inode.c @@ -295,6 +295,7 @@ retry: int f2fs_write_inode(struct inode *inode, struct writeback_control *wbc) { struct f2fs_sb_info *sbi = F2FS_I_SB(inode); + bool updated; if (inode->i_ino == F2FS_NODE_INO(sbi) || inode->i_ino == F2FS_META_INO(sbi)) @@ -307,7 +308,11 @@ int f2fs_write_inode(struct inode *inode, struct writeback_control *wbc) * We need to balance fs here to prevent from producing dirty node pages * during the urgent cleaning time when runing out of free sections. */ - if (update_inode_page(inode)) + f2fs_lock_op(sbi); + updated = update_inode_page(inode); + f2fs_unlock_op(sbi); + + if (updated) f2fs_balance_fs(sbi, true); return 0; } -- 2.7.0 ------------------------------------------------------------------------------ Site24x7 APM Insight: Get Deep Visibility into Application Performance APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month Monitor end-to-end web transactions and take corrective actions now Troubleshoot faster and improve end-user experience. Signup Now! http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140 _______________________________________________ Linux-f2fs-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel
