I think I see the problem and AFAICT commit 0a46ef234756dca is just
making the latent deadlock easier to hit. The problem is shown by these
two stacktraces from your dmesg:

Task 1
[  247.045575]  __wait_on_freeing_inode+0xba/0x140
[  247.045584]  find_inode_fast+0xa4/0xe0
[  247.045588]  iget_locked+0x71/0x200
[  247.045597]  __ext4_iget+0x148/0x1080
[  247.045615]  ext4_xattr_inode_cache_find+0xe2/0x220
[  247.045621]  ext4_xattr_inode_lookup_create+0x122/0x240
[  247.045626]  ext4_xattr_block_set+0xc2/0xeb0
[  247.045633]  ext4_xattr_set_handle+0x4ba/0x650
[  247.045641]  ext4_xattr_set+0x80/0x160

Task 2
[  247.043719]  mb_cache_entry_wait_unused+0x9a/0xd0
[  247.043729]  ext4_evict_ea_inode+0x64/0xb0
[  247.043733]  ext4_evict_inode+0x35c/0x6d0
[  247.043739]  evict+0x108/0x2c0
[  247.043745]  iput+0x14a/0x260
[  247.043749]  ext4_xattr_ibody_set+0x175/0x1d0
[  247.043754]  ext4_xattr_set_handle+0x297/0x650
[  247.043762]  ext4_xattr_set+0x80/0x160

These two tasks are deadlocked against each other. One has dropped the
last reference to xattr inode and is trying to remove it from memory and
waits for corresponding mbcache entry to get unused while another task
is holding the mbcache entry reference and is waiting for inode to be
evicted from memory. Commit 0a46ef234756dca removed synchronization on
buffer lock for one of the hot paths and thus hitting this race is now
much more likely.

I just have to make up my mind how to best fix this ABBA deadlock.

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/2080853

Title:
  oracular 6.11 kernel regression with ext4 and ea_inode mount flags and
  exercising xattrs

To manage notifications about this bug go to:
https://bugs.launchpad.net/linux/+bug/2080853/+subscriptions


-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to