summaryrefslogtreecommitdiffstats
path: root/fs/f2fs/gc.c
diff options
context:
space:
mode:
authorChao Yu <yuchao0@huawei.com>2017-08-23 06:23:24 -0400
committerJaegeuk Kim <jaegeuk@kernel.org>2017-08-29 13:05:42 -0400
commit73ac2f4e8256b9605c84364011322f015b31f499 (patch)
treeb5e98beda61c198a551f67e4284c606e2ef88705 /fs/f2fs/gc.c
parent01983c715ad0e78842a885f361ad927a3a985994 (diff)
f2fs: fix to avoid race in between aio and gc
We won't wait DIO synchronously when doing AIO, so there will be potential IO reorder in between AIO and GC, which will cause data corruption. This patch adds inode_dio_wait to serialize aio and data GC to avoid this issue. Signed-off-by: Chao Yu <yuchao0@huawei.com> Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Diffstat (limited to 'fs/f2fs/gc.c')
-rw-r--r--fs/f2fs/gc.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/fs/f2fs/gc.c b/fs/f2fs/gc.c
index 57bea2182f30..cd147e7c71e8 100644
--- a/fs/f2fs/gc.c
+++ b/fs/f2fs/gc.c
@@ -875,6 +875,9 @@ next_step:
875 continue; 875 continue;
876 } 876 }
877 locked = true; 877 locked = true;
878
879 /* wait for all inflight aio data */
880 inode_dio_wait(inode);
878 } 881 }
879 882
880 start_bidx = start_bidx_of_node(nofs, inode) 883 start_bidx = start_bidx_of_node(nofs, inode)