On Tue, Dec 05, 2023 at 10:14:00PM -0800, Christoph Hellwig wrote: > > +/* > > + * The del_gendisk() function uninitializes the disk-specific data > > + * structures, including the bdi structure, without telling anyone > > + * else. Once this happens, any attempt to call mark_buffer_dirty() > > + * (for example, by ext4_commit_super), will cause a kernel OOPS. > > + * This is a kludge to prevent these oops until we can put in a proper > > + * hook in del_gendisk() to inform the VFS and file system layers. > > + */ > > +int bdev_ejected(struct block_device *bdev) > > +{ > > + struct backing_dev_info *bdi = inode_to_bdi(bdev->bd_inode); > > + > > + return bdi->dev == NULL; > > +} > > +EXPORT_SYMBOL_GPL(bdev_ejected); > > And this code in ext4 should just go away entirely. The bdi should > always be valid for a live bdev for years. This was added because pulling a mounted a USB thumb drive (or a HDD drops off the SATA bus) while the file system is mounted and actively in use, would result in a kernel OOPS. If that's no longer true, that's great, but it would be good to test to make sure this is the case.... If we really want to remove it, I'd suggest doing this as a separate commit, so that after we see syzbot reports, or users complaining about kernel crashes, we can revert the removal if necessary. Cheers, - Ted