Skip to content
  • Jaegeuk Kim's avatar
    f2fs: fix deadlock during inline_data conversion · 5f727395
    Jaegeuk Kim authored
    
    
    A deadlock can be occurred:
    Thread 1]                             Thread 2]
     - f2fs_write_data_pages              - f2fs_write_begin
       - lock_page(page #0)
                                            - grab_cache_page(page #X)
                                            - get_node_page(inode_page)
                                            - grab_cache_page(page #0)
                                              : to convert inline_data
       - f2fs_write_data_page
         - f2fs_write_inline_data
           - get_node_page(inode_page)
    
    In this case, trying to lock inode_page and page #0 causes deadlock.
    In order to avoid this, this patch adds a rule for this locking policy,
    which is that page #0 should be locked followed by inode_page lock.
    
    Signed-off-by: default avatarJaegeuk Kim <jaegeuk@kernel.org>
    5f727395