I've just tripped over this lockdep splat on v5.12-rc1 (Linus' tree not misc-next), while investigating a different bug report.
[ 1250.721882] BUG: MAX_LOCKDEP_CHAIN_HLOCKS too low! [ 1250.722641] turning off the locking correctness validator. [ 1250.723486] CPU: 0 PID: 468 Comm: fsstress Not tainted 5.12.0-rc1 #950 [ 1250.724483] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.14.0-0-g155821a-rebuilt.opensuse.org 04/01/2014 [ 1250.726180] Call Trace: [ 1250.726551] dump_stack+0x6d/0x89 [ 1250.727052] __lock_acquire.cold+0x2dd/0x2e2 [ 1250.727676] lock_acquire+0xab/0x350 [ 1250.728204] ? btrfs_add_delayed_tree_ref+0x1ae/0x4a0 [btrfs] [ 1250.729215] ? debug_mutex_init+0x33/0x40 [ 1250.729822] _raw_spin_lock+0x2c/0x40 [ 1250.730340] ? btrfs_add_delayed_tree_ref+0x1ae/0x4a0 [btrfs] [ 1250.731208] btrfs_add_delayed_tree_ref+0x1ae/0x4a0 [btrfs] [ 1250.732047] ? kmem_cache_alloc+0x17a/0x300 [ 1250.732635] btrfs_alloc_tree_block+0x292/0x320 [btrfs] [ 1250.733417] alloc_tree_block_no_bg_flush+0x4f/0x60 [btrfs] [ 1250.734253] __btrfs_cow_block+0x13b/0x5e0 [btrfs] [ 1250.734964] btrfs_cow_block+0x117/0x240 [btrfs] [ 1250.735662] btrfs_search_slot+0x688/0xc60 [btrfs] [ 1250.736378] ? mark_held_locks+0x49/0x70 [ 1250.736927] btrfs_insert_empty_items+0x58/0xa0 [btrfs] [ 1250.737706] btrfs_insert_file_extent+0x8d/0x1c0 [btrfs] [ 1250.738494] btrfs_cont_expand+0x359/0x4c0 [btrfs] [ 1250.739226] btrfs_setattr+0x380/0x660 [btrfs] [ 1250.739900] ? ktime_get_coarse_real_ts64+0xcb/0xe0 [ 1250.740578] ? current_time+0x1b/0xd0 [ 1250.741088] notify_change+0x27b/0x490 [ 1250.741613] ? do_truncate+0x6d/0xb0 [ 1250.742122] do_truncate+0x6d/0xb0 [ 1250.742604] vfs_truncate+0x108/0x140 [ 1250.743122] do_sys_truncate.part.0+0x6a/0x80 [ 1250.743738] do_syscall_64+0x33/0x40 [ 1250.744250] entry_SYSCALL_64_after_hwframe+0x44/0xae [ 1250.744946] RIP: 0033:0x7f38d7819b8b [ 1250.745453] Code: 48 8b 4c 24 28 64 48 2b 0c 25 28 00 00 00 75 05 48 83 c4 38 c3 e8 c5 69 01 00 0f 1f 44 00 00 f3 0f 1e fa b8 4c 00 00 00 0f 05 <48> 3d 00 f0 ff ff 77 05 c3 0f 1f 40 00 48 8b 15 b1 92 0c 00 f7 d8 [ 1250.748044] RSP: 002b:00007ffdf2983ed8 EFLAGS: 00000202 ORIG_RAX: 000000000000004c [ 1250.749096] RAX: ffffffffffffffda RBX: 00007ffdf2984030 RCX: 00007f38d7819b8b [ 1250.750081] RDX: 00000000001b92a2 RSI: 00000000001b92a2 RDI: 0000000000bdb380 [ 1250.751061] RBP: 00000000001b92a2 R08: 0000000000000029 R09: 00007ffdf298402c [ 1250.752052] R10: 0000000000000002 R11: 0000000000000202 R12: 0000000000000010 [ 1250.753040] R13: 00000000001b92a2 R14: 0000000000000000 R15: 0000000000000001 [ 1260.719289] BTRFS info (device md0): scrub: started on devid 1 [ 1262.030768] BTRFS info (device md0): scrub: finished on devid 1 with status: 0 To trigger the bug I did several (4-5 I think) runs of this script: rapido1:/home/johannes/src/xfstests-dev# cat test.sh #!/bin/sh SCRATCH_DIR=/mnt/scratch echo "running fsstress" ./ltp/fsstress -w -f unlink=1 -f rmdir=1 -f symlink=1 -f sync=1 -f link=1 \ -f rename=1 -f fdatasync=1 -f removefattr=1 -f fsync=1 -f setfattr=1 \ -f setxattr=1 -f unresvsp=1 -f mkdir=1 -f mknod=1 -f chown=1 -f fiemap=1 \ -f freesp=1 -f snapshot=1 -f rnoreplace=1 -f rexchange=1 -f rwhiteout=1 \ -f allocsp=1 -f subvol_create=1 -f subvol_delete=1 -f awrite=1 \ -f writev=1 -f write=1 -f splice=1 -f mread=1 -f deduperange=1 \ -f mwrite=1 -f dwrite=1 -f clonerange=1 -f copyrange=1 -f truncate=1 \ -f fallocate=1 -f punch=1 -f zero=1 -f collapse=1 -f insert=1 -p 30 \ -n 1000 -S t -d $SCRATCH_DIR echo "scrubbing" btrfs scrub start -Bd $SCRATCH_DIR || exit 1 echo "cleaning up" rm -rf $SCRATCH_DIR/* $SCRATCH_DIR is mounted on top of a md-raid1 array: rapido1:/home/johannes/src/xfstests-dev# mdadm --detail /dev/md0 /dev/md0: Version : 1.2 Creation Time : Tue Mar 2 09:38:17 2021 Raid Level : raid1 Array Size : 3142656 (3.00 GiB 3.22 GB) Used Dev Size : 3142656 (3.00 GiB 3.22 GB) Raid Devices : 4 Total Devices : 4 Persistence : Superblock is persistent Update Time : Tue Mar 2 09:58:57 2021 State : clean Active Devices : 4 Working Devices : 4 Failed Devices : 0 Spare Devices : 0 Consistency Policy : resync Name : rapido1:0 (local to host rapido1) UUID : 10a4866b:6da1ccdc:e069e6da:79196fb1 Events : 19 Number Major Minor RaidDevice State 0 251 1 0 active sync /dev/zram1 1 251 4 1 active sync /dev/zram4 2 251 2 2 active sync /dev/zram2 3 251 3 3 active sync /dev/zram3 johannes@redsun60:linux(master)$ ./scripts/faddr2line fs/btrfs/btrfs.ko btrfs_add_delayed_tree_ref+0x1ae btrfs_add_delayed_tree_ref+0x1ae/0x4a0: btrfs_add_delayed_tree_ref at /home/johannes/src/linux/fs/btrfs/delayed-ref.c:999 johannes@redsun60:linux(master)$ cat -n fs/btrfs/delayed-ref.c | grep -C 10 999 989 is_system); 990 head_ref->extent_op = extent_op; 991 992 delayed_refs = &trans->transaction->delayed_refs; 993 spin_lock(&delayed_refs->lock); 994 995 /* 996 * insert both the head node and the new ref without dropping 997 * the spin lock 998 */ 999 head_ref = add_delayed_ref_head(trans, head_ref, record, 1000 action, &qrecord_inserted); 1001 1002 ret = insert_delayed_ref(trans, delayed_refs, head_ref, &ref->node); 1003 spin_unlock(&delayed_refs->lock); 1004 1005 /* 1006 * Need to update the delayed_refs_rsv with any changes we may have 1007 * made. 1008 */ 1009 btrfs_update_delayed_refs_rsv(trans); Has anyone seen this before?