======================================================
WARNING: possible circular locking dependency detected
6.13.0-rc4-syzkaller-00012-g9b2ffa6148b1 #0 Not tainted
------------------------------------------------------
btrfs-cleaner/6633 is trying to acquire lock:
ffff8880303a2860 (&delayed_node->mutex){+.+.}-{4:4}, at: __btrfs_release_delayed_node+0xa5/0xaf0 fs/btrfs/delayed-inode.c:268

but task is already holding lock:
ffff888033107958 (btrfs-tree-00){++++}-{4:4}, at: btrfs_tree_read_lock_nested+0x2f/0x250 fs/btrfs/locking.c:146

which lock already depends on the new lock.


the existing dependency chain (in reverse order) is:

-> #1 (btrfs-tree-00){++++}-{4:4}:
       reacquire_held_locks+0x3eb/0x690 kernel/locking/lockdep.c:5374
       __lock_release kernel/locking/lockdep.c:5563 [inline]
       lock_release+0x396/0xa30 kernel/locking/lockdep.c:5870
       up_read+0x16/0x20 kernel/locking/rwsem.c:1619
       btrfs_tree_unlock_rw fs/btrfs/locking.h:213 [inline]
       btrfs_search_slot+0xd85/0x3180 fs/btrfs/ctree.c:2183
       btrfs_lookup_inode+0xdc/0x480 fs/btrfs/inode-item.c:411
       __btrfs_update_delayed_inode+0x1e7/0xb90 fs/btrfs/delayed-inode.c:1030
       btrfs_update_delayed_inode fs/btrfs/delayed-inode.c:1114 [inline]
       __btrfs_commit_inode_delayed_items+0x2318/0x24a0 fs/btrfs/delayed-inode.c:1137
       __btrfs_run_delayed_items+0x213/0x490 fs/btrfs/delayed-inode.c:1171
       btrfs_commit_transaction+0x8a0/0x3720 fs/btrfs/transaction.c:2311
       sync_filesystem+0x1ca/0x230 fs/sync.c:66
       generic_shutdown_super+0x72/0x2d0 fs/super.c:621
       kill_anon_super+0x3b/0x70 fs/super.c:1237
       btrfs_kill_super+0x41/0x50 fs/btrfs/super.c:2100
       deactivate_locked_super+0xc6/0x130 fs/super.c:473
       cleanup_mnt+0x41f/0x4b0 fs/namespace.c:1373
       task_work_run+0x251/0x310 kernel/task_work.c:239
       resume_user_mode_work include/linux/resume_user_mode.h:50 [inline]
       exit_to_user_mode_loop kernel/entry/common.c:114 [inline]
       exit_to_user_mode_prepare include/linux/entry-common.h:329 [inline]
       __syscall_exit_to_user_mode_work kernel/entry/common.c:207 [inline]
       syscall_exit_to_user_mode+0x13f/0x340 kernel/entry/common.c:218
       do_syscall_64+0x100/0x230 arch/x86/entry/common.c:89
       entry_SYSCALL_64_after_hwframe+0x77/0x7f

-> #0 (&delayed_node->mutex){+.+.}-{4:4}:
       check_prev_add kernel/locking/lockdep.c:3161 [inline]
       check_prevs_add kernel/locking/lockdep.c:3280 [inline]
       validate_chain+0x18ef/0x5920 kernel/locking/lockdep.c:3904
       __lock_acquire+0x1397/0x2100 kernel/locking/lockdep.c:5226
       lock_acquire+0x1ed/0x550 kernel/locking/lockdep.c:5849
       __mutex_lock_common kernel/locking/mutex.c:585 [inline]
       __mutex_lock+0x1ac/0xee0 kernel/locking/mutex.c:735
       __btrfs_release_delayed_node+0xa5/0xaf0 fs/btrfs/delayed-inode.c:268
       btrfs_evict_inode+0x752/0x1080 fs/btrfs/inode.c:5384
       evict+0x4ea/0x9a0 fs/inode.c:796
       btrfs_read_locked_inode+0x1027/0x1570 fs/btrfs/inode.c:4006
       btrfs_iget+0x1ca/0x2b0 fs/btrfs/inode.c:5622
       btrfs_run_defrag_inode fs/btrfs/defrag.c:246 [inline]
       btrfs_run_defrag_inodes+0x6bb/0xe40 fs/btrfs/defrag.c:318
       cleaner_kthread+0x28c/0x3d0 fs/btrfs/disk-io.c:1525
       kthread+0x2f2/0x390 kernel/kthread.c:389
       ret_from_fork+0x4d/0x80 arch/x86/kernel/process.c:147
       ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:244

other info that might help us debug this:

 Possible unsafe locking scenario:

       CPU0                    CPU1
       ----                    ----
  rlock(btrfs-tree-00);
                               lock(&delayed_node->mutex);
                               lock(btrfs-tree-00);
  lock(&delayed_node->mutex);

 *** DEADLOCK ***

1 lock held by btrfs-cleaner/6633:
 #0: ffff888033107958 (btrfs-tree-00){++++}-{4:4}, at: btrfs_tree_read_lock_nested+0x2f/0x250 fs/btrfs/locking.c:146

stack backtrace:
CPU: 0 UID: 0 PID: 6633 Comm: btrfs-cleaner Not tainted 6.13.0-rc4-syzkaller-00012-g9b2ffa6148b1 #0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 09/13/2024
Call Trace:
 <TASK>
 __dump_stack lib/dump_stack.c:94 [inline]
 dump_stack_lvl+0x241/0x360 lib/dump_stack.c:120
 print_circular_bug+0x13a/0x1b0 kernel/locking/lockdep.c:2074
 check_noncircular+0x36a/0x4a0 kernel/locking/lockdep.c:2206
 check_prev_add kernel/locking/lockdep.c:3161 [inline]
 check_prevs_add kernel/locking/lockdep.c:3280 [inline]
 validate_chain+0x18ef/0x5920 kernel/locking/lockdep.c:3904
 __lock_acquire+0x1397/0x2100 kernel/locking/lockdep.c:5226
 lock_acquire+0x1ed/0x550 kernel/locking/lockdep.c:5849
 __mutex_lock_common kernel/locking/mutex.c:585 [inline]
 __mutex_lock+0x1ac/0xee0 kernel/locking/mutex.c:735
 __btrfs_release_delayed_node+0xa5/0xaf0 fs/btrfs/delayed-inode.c:268
 btrfs_evict_inode+0x752/0x1080 fs/btrfs/inode.c:5384
 evict+0x4ea/0x9a0 fs/inode.c:796
 btrfs_read_locked_inode+0x1027/0x1570 fs/btrfs/inode.c:4006
 btrfs_iget+0x1ca/0x2b0 fs/btrfs/inode.c:5622
 btrfs_run_defrag_inode fs/btrfs/defrag.c:246 [inline]
 btrfs_run_defrag_inodes+0x6bb/0xe40 fs/btrfs/defrag.c:318
 cleaner_kthread+0x28c/0x3d0 fs/btrfs/disk-io.c:1525
 kthread+0x2f2/0x390 kernel/kthread.c:389
 ret_from_fork+0x4d/0x80 arch/x86/kernel/process.c:147
 ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:244
 </TASK>