summaryrefslogtreecommitdiff
path: root/fs/f2fs/file.c
diff options
context:
space:
mode:
authorRussell King <rmk+kernel@arm.linux.org.uk>2013-01-19 15:27:30 +0000
committerRussell King <rmk+kernel@arm.linux.org.uk>2013-01-19 15:27:30 +0000
commit210b1847b32951f52d19df229972399e5b987de2 (patch)
treebe6eeb3ba76b4f4331c98d5ba47aa233bea8f22d /fs/f2fs/file.c
parent93d5bf073a1e01035be66dc41860b9ae9aa9ccfa (diff)
parentd01723479e6a6c70c83295f7847477a016d5e14a (diff)
downloadlinux-3.10-210b1847b32951f52d19df229972399e5b987de2.tar.gz
linux-3.10-210b1847b32951f52d19df229972399e5b987de2.tar.bz2
linux-3.10-210b1847b32951f52d19df229972399e5b987de2.zip
Merge branch 'for-rmk/virt/hyp-boot/fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/will/linux into fixes
Diffstat (limited to 'fs/f2fs/file.c')
-rw-r--r--fs/f2fs/file.c10
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);
}