On Fri, Jun 16, 2023 at 03:20:38PM +0800, Ming Lei wrote: > > > GD_DEAD is only set if the device is really dead, then all pending IO > > > will be failed. > > > > del_gendisk also sets GD_DEAD early on. > > No. > > The hang happens in fsync_bdev() of del_gendisk(), and there are IOs pending on > bio_queue_enter(). IFF we know we can't do I/O by the time del_gendisk is called, we need to call mark_disk_dead first and not paper over the problem. An API that force unfreezes is just broken and will leaves us with freezecount mismatches.