======================================================
WARNING: possible circular locking dependency detected
syzkaller #0 Not tainted
------------------------------------------------------
btrfs-cleaner/5967 is trying to acquire lock:
ffff88801ee382a8 (&delayed_node->mutex){+.+.}-{4:4}, at: __btrfs_release_delayed_node+0x9e/0xad0

but task is already holding lock:
ffff88810a4dcff8 (btrfs-tree-00){++++}-{4:4}, at: btrfs_tree_read_lock_nested+0x31/0x230

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+0x127/0x1d0
       lock_release+0x1b4/0x3e0
       up_read+0x16/0x20
       btrfs_search_slot+0xe74/0x2b90
       btrfs_lookup_inode+0xc1/0x460
       __btrfs_update_delayed_inode+0x167/0xf00
       __btrfs_commit_inode_delayed_items+0x1cbb/0x1e20
       __btrfs_run_delayed_items+0x212/0x540
       flush_space+0x511/0xcd0
       do_async_reclaim_metadata_space+0x144/0x390
       btrfs_async_reclaim_metadata_space+0x89/0xe0
       process_scheduled_works+0xae1/0x17b0
       worker_thread+0x8a0/0xda0
       kthread+0x711/0x8a0
       ret_from_fork+0x439/0x7d0
       ret_from_fork_asm+0x1a/0x30

-> #0 (&delayed_node->mutex){+.+.}-{4:4}:
       validate_chain+0xb9b/0x2140
       __lock_acquire+0xab9/0xd20
       lock_acquire+0x120/0x360
       __mutex_lock+0x187/0x1350
       __btrfs_release_delayed_node+0x9e/0xad0
       btrfs_evict_inode+0x6ea/0xe50
       evict+0x504/0x9c0
       btrfs_read_locked_inode+0x208/0x14a0
       btrfs_iget+0x1b5/0x2a0
       btrfs_run_defrag_inodes+0x68f/0xd80
       cleaner_kthread+0x376/0x400
       kthread+0x711/0x8a0
       ret_from_fork+0x439/0x7d0
       ret_from_fork_asm+0x1a/0x30

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/5967:
 #0: ffff88810a4dcff8 (btrfs-tree-00){++++}-{4:4}, at: btrfs_tree_read_lock_nested+0x31/0x230

stack backtrace:
CPU: 1 UID: 0 PID: 5967 Comm: btrfs-cleaner Not tainted syzkaller #0 PREEMPT(full) 
Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.2-debian-1.16.2-1 04/01/2014
Call Trace:
 <TASK>
 dump_stack_lvl+0x189/0x250
 print_circular_bug+0x2ee/0x310
 check_noncircular+0x134/0x160
 validate_chain+0xb9b/0x2140
 __lock_acquire+0xab9/0xd20
 lock_acquire+0x120/0x360
 __mutex_lock+0x187/0x1350
 __btrfs_release_delayed_node+0x9e/0xad0
 btrfs_evict_inode+0x6ea/0xe50
 evict+0x504/0x9c0
 btrfs_read_locked_inode+0x208/0x14a0
 btrfs_iget+0x1b5/0x2a0
 btrfs_run_defrag_inodes+0x68f/0xd80
 cleaner_kthread+0x376/0x400
 kthread+0x711/0x8a0
 ret_from_fork+0x439/0x7d0
 ret_from_fork_asm+0x1a/0x30
 </TASK>
