• Jaegeuk Kim's avatar
    f2fs: avoid RECLAIM_FS-ON-W: deadlock · 6f85b352
    Jaegeuk Kim authored
    This patch tries to avoid the following deadlock condition of which the reclaim
    path can trigger f2fs_balance_fs again.
    
    =================================
    [ INFO: inconsistent lock state ]
    ---------------------------------
    inconsistent {RECLAIM_FS-ON-W} -> {IN-RECLAIM_FS-W} usage.
    kswapd0/41 [HC0[0]:SC0[0]:HE1:SE1] takes:
     (&sbi->gc_mutex){+.+.?.}, at: f2fs_balance_fs+0xe6/0x100 [f2fs]
    {RECLAIM_FS-ON-W} state was registered at:
      [<ffffffff810aa5a9>] mark_held_locks+0xb9/0x140
      [<ffffffff810aae85>] lockdep_trace_alloc+0x85/0xf0
      [<ffffffff8113ab2c>] __alloc_pages_nodemask+0x7c/0x9b0
      [<ffffffff81175aa8>] alloc_pages_current+0xb8/0x180
      [<ffffffff811319cf>] __page_cache_alloc+0xaf/0xd0
      [<ffffffff8113225c>] find_or_create_page+0x4c/0xb0
      [<ffffffffa021359e>] find_data_page+0x14e/0x210 [f2fs]
      [<ffffffffa021161b>] f2fs_gc+0x9eb/0xd90 [f2fs]
      [<ffffffffa0218fae>] f2fs_balance_fs+0xee/0x100 [f2fs]
      [<ffffffffa020848c>] f2fs_setattr+0x6c/0x200 [f2fs]
      [<ffffffff811ae51b>] notify_change+0x1db/0x3a0
      [<ffffffff8118fbd0>] do_truncate+0x60/0xa0
      [<ffffffff8118fd95>] vfs_truncate+0x185/0x1b0
      [<ffffffff8118fe1c>] do_sys_truncate+0x5c/0xa0
      [<ffffffff8118ffee>] SyS_truncate+0xe/0x10
      [<ffffffff816e2b42>] system_call_fastpath+0x16/0x1b
    Signed-off-by: default avatarJaegeuk Kim <jaegeuk.kim@samsung.com>
    6f85b352
data.c 18 KB