summaryrefslogtreecommitdiff
path: root/fs/sysv/Makefile
diff options
context:
space:
mode:
authorChao Yu <chao2.yu@samsung.com>2015-10-08 13:27:34 +0800
committerJaegeuk Kim <jaegeuk@kernel.org>2015-10-13 09:52:34 -0700
commit08b39fbd59781729da9fb6367decaf4804a22721 (patch)
tree47c7016690f424b2461fe5ac75c876ade8f83a82 /fs/sysv/Makefile
parentea1a29a0bdfffd56ca98335c0655308e8d7d0e22 (diff)
f2fs crypto: fix racing of accessing encrypted page among
different competitors Since we use different page cache (normally inode's page cache for R/W and meta inode's page cache for GC) to cache the same physical block which is belong to an encrypted inode. Writeback of these two page cache should be exclusive, but now we didn't handle writeback state well, so there may be potential racing problem: a) kworker: f2fs_gc: - f2fs_write_data_pages - f2fs_write_data_page - do_write_data_page - write_data_page - f2fs_submit_page_mbio (page#1 in inode's page cache was queued in f2fs bio cache, and be ready to write to new blkaddr) - gc_data_segment - move_encrypted_block - pagecache_get_page (page#2 in meta inode's page cache was cached with the invalid datas of physical block located in new blkaddr) - f2fs_submit_page_mbio (page#1 was submitted, later, page#2 with invalid data will be submitted) b) f2fs_gc: - gc_data_segment - move_encrypted_block - f2fs_submit_page_mbio (page#1 in meta inode's page cache was queued in f2fs bio cache, and be ready to write to new blkaddr) user thread: - f2fs_write_begin - f2fs_submit_page_bio (we submit the request to block layer to update page#2 in inode's page cache with physical block located in new blkaddr, so here we may read gabbage data from new blkaddr since GC hasn't writebacked the page#1 yet) This patch fixes above potential racing problem for encrypted inode. Signed-off-by: Chao Yu <chao2.yu@samsung.com> Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Diffstat (limited to 'fs/sysv/Makefile')
0 files changed, 0 insertions, 0 deletions