summaryrefslogtreecommitdiffstats
path: root/fs/f2fs/data.c
diff options
context:
space:
mode:
authorJaegeuk Kim <jaegeuk@kernel.org>2014-06-04 00:39:42 +0900
committerJaegeuk Kim <jaegeuk@kernel.org>2014-06-04 18:41:38 +0900
commitb6fe5873cb422417ae3fc914954bc5a10fd4e003 (patch)
treed9e958f62b4ed402a1b10e2592453320c6ff1447 /fs/f2fs/data.c
parent1dbe4152168d44fa164edbdc9f1243de70b98f7a (diff)
downloadop-kernel-dev-b6fe5873cb422417ae3fc914954bc5a10fd4e003.zip
op-kernel-dev-b6fe5873cb422417ae3fc914954bc5a10fd4e003.tar.gz
f2fs: fix to recover data written by dio
If data are overwritten through dio, previous f2fs doesn't remain the fsync mark due to no additional node writes. Note that this patch should resolve the xfstests:311. Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Diffstat (limited to 'fs/f2fs/data.c')
-rw-r--r--fs/f2fs/data.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/fs/f2fs/data.c b/fs/f2fs/data.c
index 8c250a5..39fe7d7 100644
--- a/fs/f2fs/data.c
+++ b/fs/f2fs/data.c
@@ -1041,6 +1041,9 @@ static ssize_t f2fs_direct_IO(int rw, struct kiocb *iocb,
if (check_direct_IO(inode, rw, iov, offset, nr_segs))
return 0;
+ /* clear fsync mark to recover these blocks */
+ fsync_mark_clear(F2FS_SB(inode->i_sb), inode->i_ino);
+
return blockdev_direct_IO(rw, iocb, inode, iov, offset, nr_segs,
get_data_block);
}
OpenPOWER on IntegriCloud