To prevent data from corruption during repaly, we need to flush journal before changing journal mode from journaled. However flushing journal is not needed when changing journal to journaled. Signed-off-by: Yongqiang Yang <xiaoqiangnk@xxxxxxxxx> --- fs/ext3/inode.c | 7 ++++--- 1 files changed, 4 insertions(+), 3 deletions(-) diff --git a/fs/ext3/inode.c b/fs/ext3/inode.c index 04da6ac..5577358 100644 --- a/fs/ext3/inode.c +++ b/fs/ext3/inode.c @@ -3546,7 +3546,6 @@ int ext3_change_inode_journal_flag(struct inode *inode, int val) return -EROFS; journal_lock_updates(journal); - journal_flush(journal); /* * OK, there are no updates running now, and all cached data is @@ -3556,10 +3555,12 @@ int ext3_change_inode_journal_flag(struct inode *inode, int val) * the inode's in-core data-journaling state flag now. */ - if (val) + if (val) { EXT3_I(inode)->i_flags |= EXT3_JOURNAL_DATA_FL; - else + } else { + journal_flush(journal); EXT3_I(inode)->i_flags &= ~EXT3_JOURNAL_DATA_FL; + } ext3_set_aops(inode); journal_unlock_updates(journal); -- 1.7.5.1 -- To unsubscribe from this list: send the line "unsubscribe linux-ext4" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html