[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <80926b22-a8d2-9992-eb5e-27e2c99cf460@google.com>
Date: Tue, 25 Jun 2024 22:37:25 -0700 (PDT)
From: Hugh Dickins <hughd@...gle.com>
To: Sidhartha Kumar <sidhartha.kumar@...cle.com>
cc: linux-kernel@...r.kernel.org, maple-tree@...ts.infradead.org,
linux-mm@...ck.org, akpm@...ux-foundation.org, liam.howlett@...cle.com,
willy@...radead.org, chuck.lever@...cle.com, hughd@...gle.com
Subject: Re: [PATCH v3 00/16] Introduce a store type enum for the Maple
tree
On Tue, 18 Jun 2024, Sidhartha Kumar wrote:
> This series is rebased on top of mm-unstable + the patch:
> maple_tree: modified return type of mas_wr_store_entry()[1]. Andrew could
> you add that patch to mm-unstable before merging this series.
>
> v2[2] -> v3:
> - fix new line issues throughout the series
> - remove use of helper function in patch 13
Please give tmpfs a try on the latest mm-unstable, with
CONFIG_DEBUG_ATOMIC_SLEEP=y (maybe some of the messages below come from
other config options like PROVE_LOCKING, but ATOMIC_SLEEP the main one).
To the un-maple-trained eye, this series simply replaces a working maple
tree preallocation scheme by a broken one, doing GFP_KERNEL allocations
while holding spinlock. But I doubt that was the intention: maybe a line
of code has gone missing or something, and you can quickly unbreak it.
BUG: sleeping function called from invalid context at include/linux/sched/mm.h:337
in_atomic(): 1, irqs_disabled(): 0, non_block: 0, pid: 63, name: kdevtmpfs
preempt_count: 1, expected: 0
RCU nest depth: 0, expected: 0
3 locks held by kdevtmpfs/63:
#0: ffff8880008473f0 (sb_writers){.+.+}-{0:0}, at: mnt_want_write+0x19/0x40
#1: ffff8880008a0888 (&type->i_mutex_dir_key/1){+.+.}-{3:3}, at: filename_create+0x8a/0x120
#2: ffff8880008a0650 (&simple_offset_lock_class){+.+.}-{2:2}, at: mtree_alloc_cyclic+0x72/0xb0
Preemption disabled at:
[<ffffffff81138b94>] preempt_count_add+0x54/0x60
CPU: 4 UID: 0 PID: 63 Comm: kdevtmpfs Not tainted 6.10.0-rc5-m25 #2
Hardware name: LENOVO 20XXS3LA00/20XXS3LA00, BIOS N32ET91W (1.67 ) 02/02/2024
Call Trace:
<TASK>
dump_stack_lvl+0x5d/0x80
? preempt_count_add+0x54/0x60
dump_stack+0x10/0x20
__might_resched+0x23b/0x260
? mas_alloc_nodes+0x71/0x160
__might_sleep+0x56/0x60
might_alloc+0x2a/0x40
kmem_cache_alloc_noprof+0x28/0x190
mas_alloc_nodes+0x71/0x160
? lock_is_held+0xc/0x10
mas_node_count_gfp+0x2e/0x30
mas_wr_preallocate+0x43/0x60
mas_insert.isra.0+0x49/0xa0
mas_alloc_cyclic+0x9c/0x100
mtree_alloc_cyclic+0x92/0xb0
simple_offset_add+0x3c/0x60
shmem_mknod+0x55/0xb0
vfs_mknod+0x9c/0xc0
devtmpfs_work_loop+0x1c4/0x2a0
? trace_hardirqs_on+0x37/0x40
? _raw_spin_unlock_irqrestore+0x39/0x50
? complete_with_flags+0x40/0x50
? dmar_validate_one_drhd+0xa0/0xa0
devtmpfsd+0x25/0x30
kthread+0x100/0x110
? list_del_init+0x30/0x30
ret_from_fork+0x22/0x40
? list_del_init+0x30/0x30
ret_from_fork_asm+0x11/0x20
and lots more like that.
Thanks,
Hugh
Powered by blists - more mailing lists