On Thu, 04 May 2023 14:47:23 +0200, Jan Kara wrote: > Ext4 has a filesystem wide lock protecting ext4_writepages() calls to > avoid races with switching of journalled data flag or inode format. This > lock can however cause a deadlock like: > > CPU0 CPU1 > > ext4_writepages() > percpu_down_read(sbi->s_writepages_rwsem); > ext4_change_inode_journal_flag() > percpu_down_write(sbi->s_writepages_rwsem); > - blocks, all readers block from now on > ext4_do_writepages() > ext4_init_io_end() > kmem_cache_zalloc(io_end_cachep, GFP_KERNEL) > fs_reclaim frees dentry... > dentry_unlink_inode() > iput() - last ref => > iput_final() - inode dirty => > write_inode_now()... > ext4_writepages() tries to acquire sbi->s_writepages_rwsem > and blocks forever > > [...] Applied, thanks! [1/1] ext4: Avoid deadlock in fs reclaim with page writeback commit: 568e5b263e8bf81ffb575686f980bd18fdb7428f Best regards, -- Theodore Ts'o <tytso@xxxxxxx>