On Tue, Jun 24, 2025 at 06:57:08AM +0930, Qu Wenruo wrote: > > > 在 2025/6/23 23:27, Christoph Hellwig 写道: > > On Mon, Jun 23, 2025 at 12:56:28PM +0200, Christian Brauner wrote: > > > void (*shutdown)(struct super_block *sb); > > > + void (*drop_bdev)(struct super_block *sb, struct block_device *bdev /* , unsigned int flags/reason maybe too ? */); > > > }; > > > > > > You might want to drop a block device independent of whether the device > > > was somehow lost. So I find that a bit more flexible. > > > > Drop is weird word for what is happening here, and if it wasn't for the > > context in this thread I'd expect it to be about refcounting in Linux. > > > > When the VFS/libfs does an upcall into the file system to notify it > > that a device is gone that's pretty much a device loss. I'm not married > > to the exact name, but drop seems like a pretty bad choice. > > What about a more common used term, mark_dead()? > > It's already used in blk_holder_ops, and I'd say it's more straighforward to > me, compared to shutdown()/goingdown(). But it's not about the superblock going down necessarily. It's about the device going away for whatever reason: void (*yank_bdev)(struct super_block *sb, struct block_device *bdev /* , unsigned int flags/reason maybe too ? */); void (*pull_bdev)(struct super_block *sb, struct block_device *bdev /* , unsigned int flags/reason maybe too ? */); void (*unplug_bdev)(struct super_block *sb, struct block_device *bdev /* , unsigned int flags/reason maybe too ? */); void (*remove_bdev)(struct super_block *sb, struct block_device *bdev /* , unsigned int flags/reason maybe too ? */); On a single device superblock unplugging that device would obviously cause an actual shutdown. On multi-device superblocks it doesn't always. (That brings me to another thought. Is there a use-case for knowing in advance whether removing a device would shut down the superblock? Because then the ability to probe whether a device can be safely removed or an option to only remove the device if it can be removed without killing the superblock would be a natural extension.)