Hey, Jan, On Wed, Nov 25, 2020 at 12:40:44PM +0100, Jan Kara wrote: > > I don't think this is necessary now that the bdev and inode lifetimes are > > one. Before, punching out the association early was necessary because we > > could be in a situation where we can successfully look up a part from idr > > and then try to pin the associated disk which may already be freed. With the > > new code, the lookup is through the inode whose lifetime is one and the same > > with gendisk, so use-after-free isn't possible and __blkdev_get() will > > reliably reject such open attempts. > > I think the remove_inode_hash() call is actually still needed. Consider a > situation when the disk is unplugged, gendisk gets destroyed, bdev still > lives on (e.g. because it is still open). Device gets re-plugged, gendisk > for the same device number gets created. But we really need new bdev for > this because from higher level POV this is completely new device. And the > old bdev needs to live on as long as it is open. So IMO we still need to > just unhash the inode and leave it lingering in the background. You're absolutely right. I was only thinking about the lifetime problem described in the comment. So, it just needs an updated comment there, I think. Thanks. -- tejun