• D
    f2fs: prevent newly created inode from being dirtied incorrectly · 9ac1e2d8
    Daeho Jeong 提交于
    Now, we invoke f2fs_mark_inode_dirty_sync() to make an inode dirty in
    advance of creating a new node page for the inode. By this, some inodes
    whose node page is not created yet can be linked into the global dirty
    list.
    
    If the checkpoint is executed at this moment, the inode will be written
    back by writeback_single_inode() and finally update_inode_page() will
    fail to detach the inode from the global dirty list because the inode
    doesn't have a node page.
    
    The problem is that the inode's state in VFS layer will become clean
    after execution of writeback_single_inode() and it's still linked in
    the global dirty list of f2fs and this will cause a kernel panic.
    
    So, we will prevent the newly created inode from being dirtied during
    the FI_NEW_INODE flag of the inode is set. We will make it dirty
    right after the flag is cleared.
    Signed-off-by: NDaeho Jeong <daeho.jeong@samsung.com>
    Signed-off-by: NYoungjin Gil <youngjin.gil@samsung.com>
    Tested-by: NHobin Woo <hobin.woo@samsung.com>
    Reviewed-by: NChao Yu <yuchao0@huawei.com>
    Signed-off-by: NJaegeuk Kim <jaegeuk@kernel.org>
    9ac1e2d8
f2fs.h 98.5 KB