• Shijie Luo's avatar
    ext4: add cond_resched() to __ext4_find_entry() · 9424ef56
    Shijie Luo authored
    We tested a soft lockup problem in linux 4.19 which could also
    be found in linux 5.x.
    
    When dir inode takes up a large number of blocks, and if the
    directory is growing when we are searching, it's possible the
    restart branch could be called many times, and the do while loop
    could hold cpu a long time.
    
    Here is the call trace in linux 4.19.
    
    [  473.756186] Call trace:
    [  473.756196]  dump_backtrace+0x0/0x198
    [  473.756199]  show_stack+0x24/0x30
    [  473.756205]  dump_stack+0xa4/0xcc
    [  473.756210]  watchdog_timer_fn+0x300/0x3e8
    [  473.756215]  __hrtimer_run_queues+0x114/0x358
    [  473.756217]  hrtimer_interrupt+0x104/0x2d8
    [  473.756222]  arch_timer_handler_virt+0x38/0x58
    [  473.756226]  handle_percpu_devid_irq+0x90/0x248
    [  473.756231]  generic_handle_irq+0x34/0x50
    [  473.756234]  __handle_domain_irq+0x68/0xc0
    [  473.756236]  gic_handle_irq+0x6c/0x150
    [  473.756238]  el1_irq+0xb8/0x140
    [  473.756286]  ext4_es_lookup_extent+0xdc/0x258 [ext4]
    [  473.756310]  ext4_map_blocks+0x64/0x5c0 [ext4]
    [  473.756333]  ext4_getblk+0x6c/0x1d0 [ext4]
    [  473.756356]  ext4_bread_batch+0x7c/0x1f8 [ext4]
    [  473.756379]  ext4_find_entry+0x124/0x3f8 [ext4]
    [  473.756402]  ext4_lookup+0x8c/0x258 [ext4]
    [  473.756407]  __lookup_hash+0x8c/0xe8
    [  473.756411]  filename_create+0xa0/0x170
    [  473.756413]  do_mkdirat+0x6c/0x140
    [  473.756415]  __arm64_sys_mkdirat+0x28/0x38
    [  473.756419]  el0_svc_common+0x78/0x130
    [  473.756421]  el0_svc_handler+0x38/0x78
    [  473.756423]  el0_svc+0x8/0xc
    [  485.755156] watchdog: BUG: soft lockup - CPU#2 stuck for 22s! [tmp:5149]
    
    Add cond_resched() to avoid soft lockup and to provide a better
    system responding.
    
    Link: https://lore.kernel.org/r/20200215080206.13293-1-luoshijie1@huawei.comSigned-off-by: default avatarShijie Luo <luoshijie1@huawei.com>
    Signed-off-by: default avatarTheodore Ts'o <tytso@mit.edu>
    Reviewed-by: default avatarJan Kara <jack@suse.cz>
    Cc: stable@kernel.org
    9424ef56
namei.c 107 KB