diff options
author | Chao Yu <yuchao0@huawei.com> | 2017-08-23 18:23:24 +0800 |
---|---|---|
committer | Jaegeuk Kim <jaegeuk@kernel.org> | 2017-08-29 10:05:42 -0700 |
commit | 73ac2f4e8256b9605c84364011322f015b31f499 (patch) | |
tree | b5e98beda61c198a551f67e4284c606e2ef88705 /fs | |
parent | 01983c715ad0e78842a885f361ad927a3a985994 (diff) | |
download | op-kernel-dev-73ac2f4e8256b9605c84364011322f015b31f499.zip op-kernel-dev-73ac2f4e8256b9605c84364011322f015b31f499.tar.gz |
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')
-rw-r--r-- | fs/f2fs/gc.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/fs/f2fs/gc.c b/fs/f2fs/gc.c index 57bea21..cd147e7 100644 --- a/fs/f2fs/gc.c +++ b/fs/f2fs/gc.c @@ -875,6 +875,9 @@ next_step: continue; } locked = true; + + /* wait for all inflight aio data */ + inode_dio_wait(inode); } start_bidx = start_bidx_of_node(nofs, inode) |