[<prev] [next>] [day] [month] [year] [list]
Message-ID: <05c613e9ea956ed9caa6525509a371ee37a04380.camel@mediatek.com>
Date: Wed, 18 Jun 2025 06:27:15 +0000
From: Ed Tsai (蔡宗軒) <Ed.Tsai@...iatek.com>
To: "jaegeuk@...nel.org" <jaegeuk@...nel.org>, "axboe@...nel.dk"
<axboe@...nel.dk>, "chao@...nel.org" <chao@...nel.org>
CC: Light Hsieh (謝明燈) <Light.Hsieh@...iatek.com>,
"linux-f2fs-devel@...ts.sourceforge.net"
<linux-f2fs-devel@...ts.sourceforge.net>,
"linux-mediatek@...ts.infradead.org" <linux-mediatek@...ts.infradead.org>,
Chun-Hung Wu (巫駿宏) <Chun-hung.Wu@...iatek.com>,
"linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>,
"linux-block@...r.kernel.org" <linux-block@...r.kernel.org>
Subject: f2fs: possible circular locking dependency detected
Hi,
We get a possible kernel circular locking dependency with kernel
version 6.12.22-android16-3-g03cf4641deee-4k.
Lock approve log is as below:
kswapd0:
kswapd0: ======================================================
kswapd0: WARNING: possible circular locking dependency detected
kswapd0: 6.12.22-android16-3-g03cf4641deee-4k #1 Tainted: G
OE
kswapd0: ------------------------------------------------------
kswapd0: kswapd0/95 is trying to acquire lock:
ffffff801b6f5640 (sb_internal){.+.+}-{0:0}, at:
f2fs_evict_inode+0x220/0x7d8
kswapd0:
but task is already holding lock:
ffffffd5c35d6070 (fs_reclaim){+.+.}-{0:0}, at: balance_pgdat+0xe8/0xe10
kswapd0:
which lock already depends on the new lock.
kswapd0:
the existing dependency chain (in reverse order) is:
kswapd0:
-> #3 (fs_reclaim){+.+.}-{0:0}:
kswapd0: fs_reclaim_acquire+0x5c/0xc4
kswapd0: blk_mq_alloc_and_init_hctx+0x318/0x440
kswapd0: blk_mq_realloc_hw_ctxs+0x70/0x480
kswapd0: blk_mq_init_allocated_queue+0x134/0x610
kswapd0: __blk_mq_alloc_disk+0xb4/0x164
kswapd0: loop_add+0x190/0x3ac
kswapd0: loop_init+0xec/0x114
kswapd0: do_one_initcall+0x184/0x464
kswapd0: do_initcall_level+0xdc/0x1b0
kswapd0: do_initcalls+0x70/0xc0
kswapd0: do_basic_setup+0x1c/0x28
kswapd0: kernel_init_freeable+0x14c/0x1c8
kswapd0: kernel_init+0x20/0x1ac
kswapd0: ret_from_fork+0x10/0x20
kswapd0:
-> #2 (&q->sysfs_lock){+.+.}-{3:3}:
kswapd0: __mutex_lock_common+0xe0/0x1944
kswapd0: mutex_lock_nested+0x2c/0x3c
kswapd0: queue_attr_store+0x88/0xf0
kswapd0: sysfs_kf_write+0x98/0xc8
kswapd0: kernfs_fop_write_iter+0x12c/0x1d4
kswapd0: vfs_write+0x340/0x3ac
kswapd0: ksys_write+0x78/0xe8
kswapd0: __arm64_sys_write+0x1c/0x2c
kswapd0: invoke_syscall+0x58/0x10c
kswapd0: el0_svc_common+0xa8/0xdc
kswapd0: do_el0_svc+0x1c/0x28
kswapd0: el0_svc+0x50/0xac
kswapd0: el0t_64_sync_handler+0x70/0xbc
kswapd0: el0t_64_sync+0x1a8/0x1ac
kswapd0:
-> #1 (&q->q_usage_counter(io)#77){++++}-{0:0}:
kswapd0: __submit_bio+0xdc/0x1a8
kswapd0: submit_bio_noacct_nocheck+0x1a4/0x390
kswapd0: submit_bio_noacct+0x308/0x49c
kswapd0: submit_bio+0x158/0x174
kswapd0: f2fs_submit_read_bio+0x8c/0x134
kswapd0: f2fs_submit_page_bio+0x260/0x2b4
kswapd0: read_node_page+0xb8/0x190
kswapd0: __get_node_folio+0x90/0x4c0
kswapd0: truncate_dnode+0x40/0x28c
kswapd0: f2fs_truncate_inode_blocks+0x35c/0x788
kswapd0: f2fs_do_truncate_blocks+0x268/0x9a4
kswapd0: f2fs_truncate_blocks+0x68/0x100
kswapd0: f2fs_truncate+0xbc/0x174
kswapd0: f2fs_evict_inode+0x298/0x7d8
kswapd0: evict+0x1e8/0x43c
kswapd0: iput+0x274/0x2c0
kswapd0: do_unlinkat+0x1ac/0x2d0
kswapd0: __arm64_sys_unlinkat+0x4c/0x64
kswapd0: invoke_syscall+0x58/0x10c
kswapd0: el0_svc_common+0xa8/0xdc
kswapd0: do_el0_svc+0x1c/0x28
kswapd0: el0_svc+0x50/0xac
kswapd0: el0t_64_sync_handler+0x70/0xbc
kswapd0: el0t_64_sync+0x1a8/0x1ac
kswapd0:
-> #0 (sb_internal){.+.+}-{0:0}:
kswapd0: __lock_acquire+0x18a8/0x3160
kswapd0: lock_acquire+0x134/0x2b0
kswapd0: sb_start_intwrite+0x58/0x150
kswapd0: f2fs_evict_inode+0x220/0x7d8
kswapd0: evict+0x1e8/0x43c
kswapd0: iput+0x274/0x2c0
kswapd0: f2fs_evict_inode+0x70/0x7d8
kswapd0: evict+0x1e8/0x43c
kswapd0: prune_icache_sb+0xa0/0x104
kswapd0: super_cache_scan+0x13c/0x1b0
kswapd0: do_shrink_slab+0x2e0/0x798
kswapd0: shrink_slab+0x224/0x894
kswapd0: shrink_one+0xb8/0x228
kswapd0: shrink_node+0xd78/0x1094
kswapd0: balance_pgdat+0x814/0xe10
kswapd0: kswapd+0x2fc/0x5a4
kswapd0: kthread+0x110/0x134
kswapd0: ret_from_fork+0x10/0x20
To further clarify the stack #3:
0xffffffc0807b77b0: might_alloc at kernel-
6.12/include/linux/sched/mm.h:318
(inlined by) xa_insert at kernel-6.12/include/linux/xarray.h:783
(inlined by) blk_mq_init_hctx at kernel-6.12/block/blk-mq.c:3943
(inlined by) blk_mq_alloc_and_init_hctx at kernel-6.12/block/blk-
mq.c:4476
Best,
Ed Tsai (蔡宗軒)
*********************MEDIATEK Confidential/Internal
Use*********************
Powered by blists - more mailing lists