Under direct IO path with O_(D)SYNC, it needs to set proper APPEND or UPDATE
flags, so taht f2fs_sync_file can make its data safe.

Signed-off-by: Jaegeuk Kim <jaeg...@kernel.org>
---
 fs/f2fs/data.c | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/fs/f2fs/data.c b/fs/f2fs/data.c
index e54489b..38ce5d6 100644
--- a/fs/f2fs/data.c
+++ b/fs/f2fs/data.c
@@ -673,6 +673,9 @@ next_block:
                                        err = reserve_new_block(&dn);
                        } else {
                                err = __allocate_data_block(&dn);
+                               if (!err)
+                                       set_inode_flag(F2FS_I(inode),
+                                                       FI_APPEND_WRITE);
                        }
                        if (err)
                                goto sync_out;
@@ -1685,8 +1688,12 @@ static ssize_t f2fs_direct_IO(struct kiocb *iocb, struct 
iov_iter *iter,
        trace_f2fs_direct_IO_enter(inode, offset, count, iov_iter_rw(iter));
 
        err = blockdev_direct_IO(iocb, inode, iter, offset, get_data_block_dio);
-       if (err < 0 && iov_iter_rw(iter) == WRITE)
-               f2fs_write_failed(mapping, offset + count);
+       if (iov_iter_rw(iter) == WRITE) {
+               if (err > 0)
+                       set_inode_flag(F2FS_I(inode), FI_UPDATE_WRITE);
+               else if (err < 0)
+                       f2fs_write_failed(mapping, offset + count);
+       }
 
        trace_f2fs_direct_IO_exit(inode, offset, count, iov_iter_rw(iter), err);
 
-- 
2.6.3


------------------------------------------------------------------------------
Find and fix application performance issues faster with Applications Manager
Applications Manager provides deep performance insights into multiple tiers of
your business applications. It resolves application problems quickly and
reduces your MTTR. Get your free trial!
https://ad.doubleclick.net/ddm/clk/302982198;130105516;z
_______________________________________________
Linux-f2fs-devel mailing list
Linux-f2fs-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel

Reply via email to