diff options
| author | Breno Leitao <leitao@debian.org> | 2026-09-18 04:01:57 -0700 |
|---|---|---|
| committer | Christian Brauner <brauner@kernel.org> | 2026-09-25 16:57:24 +0200 |
| commit | a647a53bc89a046bee4a12a0a5627f2dfaaef807 (patch) | |
| tree | dac5a026601bdf8177597c5e9834dac88566efe7 /tools/lib/python/kdoc/parse_data_structs.py | |
| parent | 9a82c64e133fdaf6e250dcb25c57e8d0d837ea64 (diff) | |
| download | linux-next-a647a53bc89a046bee4a12a0a5627f2dfaaef807.tar.gz linux-next-a647a53bc89a046bee4a12a0a5627f2dfaaef807.zip | |
dcache: report a Tasks-RCU quiescent state in dentry_kill()
I am constantly seeing the following warning on Meta's fleet:
INFO: rcu_tasks detected stalls on tasks:
native_queued_spin_lock_slowpath
locked_inode_to_wb_and_lock_list
inode_io_list_del
evict
__dentry_kill
shrink_dentry_list
shrink_dcache_tree
d_invalidate
btrfs_delete_subvolume
btrfs_ioctl_snap_destroy
btrfs_ioctl
do_syscall_64
dentry_kill() is the common funnel for dentry teardown: dput(),
shrink_dentry_list() and shrink_dcache_tree() all reach it, once per
dentry, and its cond_resched() is the only reschedule point on that path.
cond_resched() is not an RCU-tasks quiescent state.
Use cond_resched_tasks_rcu_qs() so the teardown reports an RCU-tasks
quiescent state as it proceeds.
Fixes: 9c5f1d30199d ("dcache: move cond_resched() into the end of __dentry_kill()")
Cc: stable@vger.kernel.org
Signed-off-by: Breno Leitao <leitao@debian.org>
Link: https://patch.msgid.link/20260918-dcache-task-rcu-qa-v1-1-963ec83e6d0b@debian.org
Reviewed-by: Paul E. McKenney <paulmck@kernel.org>
Signed-off-by: Christian Brauner (Amutable) <brauner@kernel.org>
Diffstat (limited to 'tools/lib/python/kdoc/parse_data_structs.py')
0 files changed, 0 insertions, 0 deletions
