On Wed, Oct 18, 2023 at 05:29:24PM +0200, Jan Kara wrote: > The implementation of bdev holder operations such as fs_bdev_mark_dead() > and fs_bdev_sync() grab sb->s_umount semaphore under > bdev->bd_holder_lock. This is problematic because it leads to > disk->open_mutex -> sb->s_umount lock ordering which is counterintuitive > (usually we grab higher level (e.g. filesystem) locks first and lower > level (e.g. block layer) locks later) and indeed makes lockdep complain > about possible locking cycles whenever we open a block device while > holding sb->s_umount semaphore. Implement a function This patches together with my series that Christoph sent out for me Link: https://lore.kernel.org/r/20231017184823.1383356-1-hch@xxxxxx two days ago (tyvm!) the lockdep false positives are all gone and we also eliminated the counterintuitive ordering requirement that forces us to give up s_umount before opening block devices. I've verified that yesterday and did a bunch of testing via sudden device removal. Christoph had thankfully added generic/730 and generic/731 to emulate some device removal. I also messed around with the loop code and specifically used LOOP_CHANGE_FD to force a disk_force_media_change() on a filesystem.