Skip to content
  • Chao Yu's avatar
    f2fs: fix to update dirty page count correctly · 0f3311a8
    Chao Yu authored
    
    
    Once we failed to merge inline data into inode page during flushing inline
    inode, we will skip invoking inode_dec_dirty_pages, which makes dirty page
    count incorrect, result in panic in ->evict_inode, Fix it.
    
    ------------[ cut here ]------------
    kernel BUG at /home/yuchao/git/devf2fs/inode.c:336!
    invalid opcode: 0000 [#1] PREEMPT SMP
    CPU: 3 PID: 10004 Comm: umount Tainted: G           O    4.6.0-rc5+ #17
    Hardware name: innotek GmbH VirtualBox/VirtualBox, BIOS VirtualBox 12/01/2006
    task: f0c33000 ti: c5212000 task.ti: c5212000
    EIP: 0060:[<f89aacb5>] EFLAGS: 00010202 CPU: 3
    EIP is at f2fs_evict_inode+0x85/0x490 [f2fs]
    EAX: 00000001 EBX: c4529ea0 ECX: 00000001 EDX: 00000000
    ESI: c0131000 EDI: f89dd0a0 EBP: c5213e9c ESP: c5213e78
     DS: 007b ES: 007b FS: 00d8 GS: 0033 SS: 0068
    CR0: 80050033 CR2: b75878c0 CR3: 1a36a700 CR4: 000406f0
    Stack:
     c4529ea0 c4529ef4 c5213e8c c176d45c c4529ef4 00000000 c4529ea0 c4529fac
     f89dd0a0 c5213eb0 c1204a68 c5213ed8 c452a2b4 c6680930 c5213ec0 c1204b64
     c6680d44 c6680620 c5213eec c120588d ee84b000 ee84b5c0 c5214000 ee84b5e0
    Call Trace:
     [<c176d45c>] ? _raw_spin_unlock+0x2c/0x50
     [<c1204a68>] evict+0xa8/0x170
     [<c1204b64>] dispose_list+0x34/0x50
     [<c120588d>] evict_inodes+0x10d/0x130
     [<c11ea941>] generic_shutdown_super+0x41/0xe0
     [<c1185190>] ? unregister_shrinker+0x40/0x50
     [<c1185190>] ? unregister_shrinker+0x40/0x50
     [<c11eac52>] kill_block_super+0x22/0x70
     [<f89af23e>] kill_f2fs_super+0x1e/0x20 [f2fs]
     [<c11eae1d>] deactivate_locked_super+0x3d/0x70
     [<c11eb383>] deactivate_super+0x43/0x60
     [<c1208ec9>] cleanup_mnt+0x39/0x80
     [<c1208f50>] __cleanup_mnt+0x10/0x20
     [<c107d091>] task_work_run+0x71/0x90
     [<c105725a>] exit_to_usermode_loop+0x72/0x9e
     [<c1001c7c>] do_fast_syscall_32+0x19c/0x1c0
     [<c176dd48>] sysenter_past_esp+0x45/0x74
    EIP: [<f89aacb5>] f2fs_evict_inode+0x85/0x490 [f2fs] SS:ESP 0068:c5213e78
    ---[ end trace d30536330b7fdc58 ]---
    
    Signed-off-by: default avatarChao Yu <yuchao0@huawei.com>
    Signed-off-by: default avatarJaegeuk Kim <jaegeuk@kernel.org>
    0f3311a8