f2fs: fix fs corruption due to zero inode page
authorJaegeuk Kim <jaegeuk@kernel.org>
Wed, 12 Apr 2017 02:01:26 +0000 (19:01 -0700)
committerJaegeuk Kim <jaegeuk@kernel.org>
Wed, 12 Apr 2017 19:57:06 +0000 (12:57 -0700)
commit9bb02c3627f46e50246bf7ab957b56ffbef623cb
tree4f50189287a94421e93f93a3df35b7b5461be33f
parenta54455f5eeb8d65455a27b3ace99f9af295b2897
f2fs: fix fs corruption due to zero inode page

This patch fixes the following scenario.

- f2fs_create/f2fs_mkdir             - write_checkpoint
 - f2fs_mark_inode_dirty_sync         - block_operations
                                       - f2fs_lock_all
                                       - f2fs_sync_inode_meta
                                        - f2fs_unlock_all
                                        - sync_inode_metadata
 - f2fs_lock_op
                                         - f2fs_write_inode
                                          - update_inode_page
                                           - get_node_page
                                             return -ENOENT
 - new_inode_page
  - fill_node_footer
 - f2fs_mark_inode_dirty_sync
 - ...
 - f2fs_unlock_op
                                          - f2fs_inode_synced
                                       - f2fs_lock_all
                                       - do_checkpoint

In this checkpoint, we can get an inode page which contains zeros having valid
node footer only.

Cc: <stable@vger.kernel.org>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
fs/f2fs/inode.c
fs/f2fs/namei.c