summaryrefslogtreecommitdiffstats
path: root/block
diff options
context:
space:
mode:
authorChao Yu <yuchao0@huawei.com>2019-08-16 11:03:34 +0800
committerJaegeuk Kim <jaegeuk@kernel.org>2019-08-23 07:57:14 -0700
commit899fee36fac07e49bb969e3f214e572eecb14f00 (patch)
tree5f38ee602865f364aaaaaff3c09158524c12c179 /block
parentaabc172b986fd797065a61625c22a27a61f3f43d (diff)
downloadlinux-899fee36fac07e49bb969e3f214e572eecb14f00.tar.bz2
f2fs: fix to avoid data corruption by forbidding SSR overwrite
There is one case can cause data corruption. - write 4k to fileA - fsync fileA, 4k data is writebacked to lbaA - write 4k to fileA - kworker flushs 4k to lbaB; dnode contain lbaB didn't be persisted yet - write 4k to fileB - kworker flush 4k to lbaA due to SSR - SPOR -> dnode with lbaA will be recovered, however lbaA contains fileB's data One solution is tracking all fsynced file's block history, and disallow SSR overwrite on newly invalidated block on that file. However, during recovery, no matter the dnode is flushed or fsynced, all previous dnodes until last fsynced one in node chain can be recovered, that means we need to record all block change in flushed dnode, which will cause heavy cost, so let's just use simple fix by forbidding SSR overwrite directly. Fixes: 5b6c6be2d878 ("f2fs: use SSR for warm node as well") Signed-off-by: Chao Yu <yuchao0@huawei.com> Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Diffstat (limited to 'block')
0 files changed, 0 insertions, 0 deletions