• Jaegeuk Kim's avatar
    f2fs: wait on atomic writes to count F2FS_CP_WB_DATA · 31867b23
    Jaegeuk Kim authored
    Otherwise, we can get wrong counts incurring checkpoint hang.
    
    IO_W (CP:  -24, Data:   24, Flush: (   0    0    1), Discard: (   0    0))
    
    Thread A                        Thread B
    - f2fs_write_data_pages
     -  __write_data_page
      - f2fs_submit_page_write
       - inc_page_count(F2FS_WB_DATA)
         type is F2FS_WB_DATA due to file is non-atomic one
    - f2fs_ioc_start_atomic_write
     - set_inode_flag(FI_ATOMIC_FILE)
                                    - f2fs_write_end_io
                                     - dec_page_count(F2FS_WB_CP_DATA)
                                       type is F2FS_WB_DATA due to file becomes
                                       atomic one
    
    Cc: <stable@vger.kernel.org>
    Reviewed-by: default avatarChao Yu <yuchao0@huawei.com>
    Signed-off-by: default avatarJaegeuk Kim <jaegeuk@kernel.org>
    31867b23
file.c 74.2 KB