lkml.org 
[lkml]   [2018]   [Sep]   [18]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.18 120/158] f2fs: fix to skip GC if type in SSA and SIT is inconsistent
    Date
    4.18-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Chao Yu <yuchao0@huawei.com>

    [ Upstream commit 10d255c3540239c7920f52d2eb223756e186af56 ]

    If segment type in SSA and SIT is inconsistent, we will encounter below
    BUG_ON during GC, to avoid this panic, let's just skip doing GC on such
    segment.

    The bug is triggered with image reported in below link:

    https://bugzilla.kernel.org/show_bug.cgi?id=200223

    [ 388.060262] ------------[ cut here ]------------
    [ 388.060268] kernel BUG at /home/y00370721/git/devf2fs/gc.c:989!
    [ 388.061172] invalid opcode: 0000 [#1] SMP
    [ 388.061773] Modules linked in: f2fs(O) bluetooth ecdh_generic xt_tcpudp iptable_filter ip_tables x_tables lp ttm drm_kms_helper drm intel_rapl sb_edac crct10dif_pclmul crc32_pclmul ghash_clmulni_intel pcbc aesni_intel fb_sys_fops ppdev aes_x86_64 syscopyarea crypto_simd sysfillrect parport_pc joydev sysimgblt glue_helper parport cryptd i2c_piix4 serio_raw mac_hid btrfs hid_generic usbhid hid raid6_pq psmouse pata_acpi floppy
    [ 388.064247] CPU: 7 PID: 4151 Comm: f2fs_gc-7:0 Tainted: G O 4.13.0-rc1+ #26
    [ 388.065306] Hardware name: Xen HVM domU, BIOS 4.1.2_115-900.260_ 11/06/2015
    [ 388.066058] task: ffff880201583b80 task.stack: ffffc90004d7c000
    [ 388.069948] RIP: 0010:do_garbage_collect+0xcc8/0xcd0 [f2fs]
    [ 388.070766] RSP: 0018:ffffc90004d7fc68 EFLAGS: 00010202
    [ 388.071783] RAX: ffff8801ed227000 RBX: 0000000000000001 RCX: ffffea0007b489c0
    [ 388.072700] RDX: ffff880000000000 RSI: 0000000000000001 RDI: ffffea0007b489c0
    [ 388.073607] RBP: ffffc90004d7fd58 R08: 0000000000000003 R09: ffffea0007b489dc
    [ 388.074619] R10: 0000000000000000 R11: 0052782ab317138d R12: 0000000000000018
    [ 388.075625] R13: 0000000000000018 R14: ffff880211ceb000 R15: ffff880211ceb000
    [ 388.076687] FS: 0000000000000000(0000) GS:ffff880214fc0000(0000) knlGS:0000000000000000
    [ 388.083277] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [ 388.084536] CR2: 0000000000e18c60 CR3: 00000001ecf2e000 CR4: 00000000001406e0
    [ 388.085748] Call Trace:
    [ 388.086690] ? find_next_bit+0xb/0x10
    [ 388.088091] f2fs_gc+0x1a8/0x9d0 [f2fs]
    [ 388.088888] ? lock_timer_base+0x7d/0xa0
    [ 388.090213] ? try_to_del_timer_sync+0x44/0x60
    [ 388.091698] gc_thread_func+0x342/0x4b0 [f2fs]
    [ 388.092892] ? wait_woken+0x80/0x80
    [ 388.094098] kthread+0x109/0x140
    [ 388.095010] ? f2fs_gc+0x9d0/0x9d0 [f2fs]
    [ 388.096043] ? kthread_park+0x60/0x60
    [ 388.097281] ret_from_fork+0x25/0x30
    [ 388.098401] Code: ff ff 48 83 e8 01 48 89 44 24 58 e9 27 f8 ff ff 48 83 e8 01 e9 78 fc ff ff 48 8d 78 ff e9 17 fb ff ff 48 83 ef 01 e9 4d f4 ff ff <0f> 0b 66 0f 1f 44 00 00 0f 1f 44 00 00 55 48 89 e5 41 56 41 55
    [ 388.100864] RIP: do_garbage_collect+0xcc8/0xcd0 [f2fs] RSP: ffffc90004d7fc68
    [ 388.101810] ---[ end trace 81c73d6e6b7da61d ]---

    Signed-off-by: Chao Yu <yuchao0@huawei.com>
    Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    fs/f2fs/gc.c | 8 +++++++-
    1 file changed, 7 insertions(+), 1 deletion(-)

    --- a/fs/f2fs/gc.c
    +++ b/fs/f2fs/gc.c
    @@ -986,7 +986,13 @@ static int do_garbage_collect(struct f2f
    goto next;

    sum = page_address(sum_page);
    - f2fs_bug_on(sbi, type != GET_SUM_TYPE((&sum->footer)));
    + if (type != GET_SUM_TYPE((&sum->footer))) {
    + f2fs_msg(sbi->sb, KERN_ERR, "Inconsistent segment (%u) "
    + "type [%d, %d] in SSA and SIT",
    + segno, type, GET_SUM_TYPE((&sum->footer)));
    + set_sbi_flag(sbi, SBI_NEED_FSCK);
    + goto next;
    + }

    /*
    * this is to avoid deadlock:

    \
     
     \ /
      Last update: 2018-09-18 01:18    [W:4.188 / U:0.028 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site