• Chao Yu's avatar
    f2fs: fix to clear FI_VOLATILE_FILE correctly · dfa74280
    Chao Yu authored
    Thread A			Thread B
    - f2fs_release_file
     - clear_inode_flag(FI_VOLATILE_FILE)
    				- wb_writeback
    				 - writeback_sb_inodes
    				  - __writeback_single_inode
    				   - do_writepages
    				    - f2fs_write_data_pages
    				     - __write_data_page
    				     all volatile file's pages
    				     are writebacked to storage
     - set_inode_flag(FI_DROP_CACHE)
     - filemap_fdatawrite
    
    There is a hole that mm can flush all dirty pages of volatile file as
    inode is not tagged with both FI_VOLATILE_FILE and FI_DROP_CACHE flags,
    we should never writeback the page #0 and also it's unneeded to writeback
    other pages.
    
    This patch adjusts to relocate clear_inode_flag(FI_VOLATILE_FILE), so that
    FI_VOLATILE_FILE flag can be remained before all dirty pages were dropped
    to avoid issue.
    Signed-off-by: default avatarChao Yu <yuchao0@huawei.com>
    Signed-off-by: default avatarJaegeuk Kim <jaegeuk@kernel.org>
    dfa74280
file.c 70.9 KB