• Jaegeuk Kim's avatar
    f2fs: handle errors correctly during f2fs_reserve_block · a8865372
    Jaegeuk Kim authored
    The get_dnode_of_data nullifies inode and node page when error is occurred.
    
    There are two cases that passes inode page into get_dnode_of_data().
    
    1. make_empty_dir()
        -> get_new_data_page()
          -> f2fs_reserve_block(ipage)
    	-> get_dnode_of_data()
    
    2. f2fs_convert_inline_data()
        -> __f2fs_convert_inline_data()
          -> f2fs_reserve_block(ipage)
    	-> get_dnode_of_data()
    
    This patch adds correct error handling codes when get_dnode_of_data() returns
    an error.
    
    At first, f2fs_reserve_block() calls f2fs_put_dnode() whenever reserve_new_block
    returns an error.
    So, the rule of f2fs_reserve_block() is to nullify inode page when there is any
    error internally.
    
    Finally, two callers of f2fs_reserve_block() should call f2fs_put_dnode()
    appropriately if they got an error since successful f2fs_reserve_block().
    Signed-off-by: default avatarJaegeuk Kim <jaegeuk.kim@samsung.com>
    a8865372
data.c 25.7 KB