Re: fs/buffer.c: WARNING: alloc_page_buffers while mke2fs

From: Jan Kara
Date: Thu Mar 05 2020 - 04:38:40 EST


On Tue 03-03-20 14:15:24, Naresh Kamboju wrote:
> [Sorry for the spam]
>
> Linux-next 5.6.0-rc3-next-20200302 running on arm64 juno-r2 device while
> running LTP syscalls chown tests.
>
> Suspecting commits are (did not do git bisect),
> b1473d5f3d0 fs/buffer.c: dump more info for __getblk_gfp() stall problem
> b10a7ae6565 fs/buffer.c: add debug print for __getblk_gfp() stall problem

These are almost certainly unrelated. If I'm looking right, the warning is
coming from memalloc_use_memcg() called from alloc_page_buffers()
complaining that memcg to charge is already set. But I don't see how that
would be possible (at least with today's linux-next). Can you reproduce the
problem with today's linux-next?

Honza
>
> steps to reproduce:
> -------------------
> - Boot kernel Linux-next 5.6.0-rc3-next-20200302 on arm64 device
> - cd /opt/ltp
> - ./runltp -s chown -I 10 -d /scratch -p -q
>
> * /scratch is a mounted hard drive for LTP test files.
>
> chown03_16 2 TCONF :
> /usr/src/debug/ltp/20190930-r0/git/testcases/kernel/syscalls/chown/../utils/compat_16.h:168:
> Remaining cases not appropriate for configuration
> mke2fs 1.43.8 (1-Jan-2018)
> [ 97.998689] ------------[ cut here ]------------
> [ 98.003346] WARNING: CPU: 2 PID: 340 at
> include/linux/sched/mm.h:323 alloc_page_buffers+0x210/0x288
> [ 98.012409] Modules linked in: rfkill tda998x cec drm_kms_helper
> drm crct10dif_ce fuse
> [ 98.020369] CPU: 2 PID: 340 Comm: kworker/u12:6 Not tainted
> 5.6.0-rc3-next-20200302 #1
> [ 98.028302] Hardware name: ARM Juno development board (r2) (DT)
> [ 98.034242] Workqueue: loop0 loop_workfn
> [ 98.038176] pstate: 60000005 (nZCv daif -PAN -UAO)
> [ 98.042980] pc : alloc_page_buffers+0x210/0x288
> [ 98.047522] lr : alloc_page_buffers+0x50/0x288
> [ 98.051972] sp : ffff000904a76c00
> [ 98.055291] x29: ffff000904a76c00 x28: ffff000900126000
> [ 98.060617] x27: ffff0008e0ad0888 x26: ffffffe001ff3908
> [ 98.065941] x25: 0000000000408c40 x24: ffffffe001ff3900
> [ 98.071265] x23: 0000000000000401 x22: ffff0008e0ad0780
> [ 98.076589] x21: 0000000000001000 x20: 0000000000000000
> [ 98.081913] x19: ffff0009022fd980 x18: 0000000000000000
> [ 98.087236] x17: 0000000000000000 x16: 0000000000000000
> [ 98.092559] x15: 0000000000000000 x14: ffffa00010468954
> [ 98.097883] x13: ffffa00010259490 x12: ffff9ffc003fe727
> [ 98.103207] x11: 1ffffffc003fe726 x10: ffff9ffc003fe726
> [ 98.108531] x9 : dfffa00000000000 x8 : 0000000000000001
> [ 98.113855] x7 : ffffffe001ff3937 x6 : ffffffe001ff3934
> [ 98.119179] x5 : 00006003ffc018da x4 : 000000000000002d
> [ 98.124503] x3 : dfffa00000000000 x2 : 0000000000000007
> [ 98.129826] x1 : ffff0009022fe300 x0 : ffff000900126000
> [ 98.135150] Call trace:
> [ 98.137605] alloc_page_buffers+0x210/0x288
> [ 98.141799] __getblk_gfp+0x1d4/0x400
> [ 98.145475] ext4_read_block_bitmap_nowait+0x148/0xbc8
> [ 98.150628] ext4_mb_init_cache+0x25c/0x9b0
> [ 98.154821] ext4_mb_init_group+0x270/0x390
> [ 98.159014] ext4_mb_good_group+0x264/0x270
> [ 98.163208] ext4_mb_regular_allocator+0x480/0x798
> [ 98.168011] ext4_mb_new_blocks+0x958/0x10f8
> [ 98.172294] ext4_ext_map_blocks+0xec8/0x1618
> [ 98.176660] ext4_map_blocks+0x1b8/0x8a0
> [ 98.180592] ext4_writepages+0x830/0xf10
> [ 98.184523] do_writepages+0xb4/0x198
> [ 98.188195] __filemap_fdatawrite_range+0x170/0x1c8
> [ 98.193086] filemap_write_and_wait_range+0x40/0xb0
> [ 98.197974] ext4_punch_hole+0x4a4/0x660
> [ 98.201907] ext4_fallocate+0x294/0x1190
> [ 98.205839] loop_process_work+0x690/0x1100
> [ 98.210032] loop_workfn+0x2c/0x110
> [ 98.213529] process_one_work+0x3e0/0x648
> [ 98.217546] worker_thread+0x70/0x670
> [ 98.221217] kthread+0x1b8/0x1c0
> [ 98.224452] ret_from_fork+0x10/0x18
> [ 98.228033] ---[ end trace 75d39f61d945043e ]---
> chown04 0 TINFO : Using test device LTP_DEV='/dev/loop0'
> chown04 0 TINFO : Formatting /dev/loop0 with ext2 opts='' extra opts=''
> chown04 1 TPASS : chown failed: TEST_ERRNO=EPERM(1): Operation
> not permitted
> chown04 2 TPASS : chown failed: TEST_ERRNO=EACCES(13): Permission denied
> chown04 3 TPASS : chown failed: TEST_ERRNO=EFAULT(14): Bad address
> chown04 4 TPASS : chown failed: TEST_ERRNO=ENAMETOOLONG(36):
> File name too long
> chown04 5 TPASS : chown failed: TEST_ERRNO=ENOENT(2): No such
> file or directory
> chown04 6 TPASS : chown failed: TEST_ERRNO=ENOTDIR(20): Not a directory
> chown04 7 TPASS : chown failed: TEST_ERRNO=ELOOP(40): Too many
> levels of symbolic links
> chown04 8 TPASS : chown failed: TEST_ERRNO=EROFS(30): Read-only
> file system
> mke2fs 1.43.8 (1-Jan-2018)
> chown04_16 0 TINFO : Using test device LTP_DEV='/dev/loop0'
> chown04_16 0 TINFO : Formatting /dev/loop0 with ext2 opts='' extra opts=''
> chown04_16 1 TCONF :
> /usr/src/debug/ltp/20190930-r0/git/testcases/kernel/syscalls/chown/../utils/compat_16.h:168:
> 16-bit version of chown() is not supported on your platform
> chown04_16 2 TCONF :
> /usr/src/debug/ltp/20190930-r0/git/testcases/kernel/syscalls/chown/../utils/compat_16.h:168:
> Remaining cases not appropriate for configuration
>
> Ref:
> https://lkft.validation.linaro.org/scheduler/job/1262252#L2152
> https://lkft.validation.linaro.org/scheduler/job/1262374#L1313
> https://lkft.validation.linaro.org/scheduler/job/1262121#L2153
> https://lkft.validation.linaro.org/scheduler/job/1262105#L2116
>
> --
> Linaro LKFT
> https://lkft.linaro.org
--
Jan Kara <jack@xxxxxxxx>
SUSE Labs, CR