diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c index fa245fe92e5a..fe2407b3d92d 100644 --- a/fs/ext4/inode.c +++ b/fs/ext4/inode.c @@ -4658,7 +4658,8 @@ int ext4_write_inode(struct inode *inode, struct writeback_control *wbc) { int err; - if (WARN_ON_ONCE(current->flags & PF_MEMALLOC)) + if (WARN_ON_ONCE(current->flags & PF_MEMALLOC) || + (inode->i_sb->s_flags & MS_RDONLY)) return 0; if (EXT4_SB(inode->i_sb)->s_journal) { @@ -4676,7 +4677,8 @@ int ext4_write_inode(struct inode *inode, struct writeback_control *wbc) if (wbc->sync_mode != WB_SYNC_ALL || wbc->for_sync) return 0; - err = ext4_force_commit(inode->i_sb); + err = jbd2_complete_transaction(EXT4_SB(inode->i_sb)->s_journal, + EXT4_I(inode)->i_sync_tid); } else { struct ext4_iloc iloc;