diff options
| author | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2013-01-21 17:46:16 +0900 |
|---|---|---|
| committer | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2013-01-21 17:46:16 +0900 |
| commit | 69485d3e6d6839b46a56c77d2dffad18cb7d373f (patch) | |
| tree | 20e9de1d5fd9f6617b05e759f9326eaffaf743ee /fs/f2fs/file.c | |
| parent | f2a93e2a4c048dfb5c7ee3f159a4a1d1cb61b4b5 (diff) | |
| parent | 7881fd0fb3ecc9e367ba998a4de533e7eecbdfeb (diff) | |
Merge remote-tracking branch 'asoc/fix/adsp' into asoc-adsp
Diffstat (limited to 'fs/f2fs/file.c')
| -rw-r--r-- | fs/f2fs/file.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/fs/f2fs/file.c b/fs/f2fs/file.c index f9e085dfb1f..7f9ea9271eb 100644 --- a/fs/f2fs/file.c +++ b/fs/f2fs/file.c @@ -160,15 +160,17 @@ int f2fs_sync_file(struct file *file, loff_t start, loff_t end, int datasync) if (need_to_sync_dir(sbi, inode)) need_cp = true; - f2fs_write_inode(inode, NULL); - if (need_cp) { /* all the dirty node pages should be flushed for POR */ ret = f2fs_sync_fs(inode->i_sb, 1); clear_inode_flag(F2FS_I(inode), FI_NEED_CP); } else { - while (sync_node_pages(sbi, inode->i_ino, &wbc) == 0) - f2fs_write_inode(inode, NULL); + /* if there is no written node page, write its inode page */ + while (!sync_node_pages(sbi, inode->i_ino, &wbc)) { + ret = f2fs_write_inode(inode, NULL); + if (ret) + goto out; + } filemap_fdatawait_range(sbi->node_inode->i_mapping, 0, LONG_MAX); } |
